0

我在动作中定义了一个表单,并将其传递给模板。保存时无法设置默认值。你能告诉我我做错了什么吗?

在模块\问题\操作中:

  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());
  }

在 \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>
4

1 回答 1

0

两个选项之一:

  1. 将 setDefault 代码放在 QuestionForm 类中

或者

  1. 在实例化表单对象之后立即放置 setDefault 代码

常见的做法是选项 #1,因为它会导致表单配置和操作之间的松散耦合。

于 2012-10-03T17:52:25.257 回答