I'm defining a form in the actions, and passing it to the template. It's failing to set the default values when saving. Can you tell me what I'm doing wrong?
In modules\question\actions:
public function executeNew(sfWebRequest $request)
{
$this->form = new questionForm();
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
// create question
$user = $this->getUser()->getGuardUser()->getId();
$question = new Question();
$question->setQuestionTitle($this->getRequestParameter('question_title'));
$question->setQuestionBody($this->getRequestParameter('question_body'));
$question->setUserId($user);
$question->save();
$question->addTagsForUser($this->getRequestParameter('tag'), $user);
return $this->redirect('question/index');
}
//set current user as default
$this->form->setDefault('user_id',$this->getUser()->getGuardUser()->getId());
}
In \modules\question\templates:
<?php echo $form->renderFormTag('question/new') ?>
<table>
<?php echo $form['question_title']->renderRow(array('size' => 40), 'Question title:') ?>
<?php echo $form['question_body']->renderRow(array('cols' => 40, 'rows' => 10), 'Description:') ?>
<?php echo input_auto_complete_tag('tag', '', '@tag_autocomplete', 'autocomplete=off', 'use_style=true') ?>
<tr>
<td colspan="2">
<input type="submit" value="ask it" />
</td>
</tr>
</table>
</form>
One of two options:
OR
The common practice is option #1, as it results in loose coupling between your form configuration and the actions.