-1

我有一个名为的模块main,它是我的默认模块,还有一个名为song.

我想将我的main模块的“添加表单”放入我的song模块中。

我不知道我是否必须使用组件,如何以及在哪里处理表单。

请你帮助我好吗 ?

4

1 回答 1

0

你检查过文档吗?特别是文档的这一部分

它通过使用基本的联系表格来涵盖表格系统:

  • 您拥有创建表单实例并处理提交(验证、保存等)的控制器(actions.class.php在模块内部)main
  • 然后是显示表单的模板 ( contactSuccess.php)

主要区别在于您可能有一个名为 Song 的模型,因此您必须使用 SongForm 而不是创建一个新模型(使用new sfForm())。对于这一部分,您可以在同一文档页面上看到基于模型的部分表单,它涵盖了文章模型的情况。

编辑:

一步一步:

在你的main/actions/actions.class.php

public function executeIndex($request)
{
  $this->form = new SongForm();
  if ($request->isMethod('post'))
  {
    $this->form->bind($request->getParameter('song'));
    if ($this->form->isValid())
    {
      $song = $this->form->save();

      $this->getUser()->setFlash('notice', 'Thank you, the song has been added');

      $this->redirect('main/index');
    }
  }
}

在您的模板中,main/templates/indexSuccess.php

<?php if ($sf_user->hasFlash('notice')): ?>
  <div class="flash_notice"><?php echo $sf_user->getFlash('notice') ?></div>
<?php endif ?>

<?php echo $form->renderFormTag('main/index') ?>
  <table>
    <?php echo $form ?>
    <tr>
      <td colspan="2">
        <input type="submit" />
      </td>
    </tr>
  </table>
</form>

你完成了。

真的鼓励你阅读整个Jobeet 教程。你会学到很多东西。基本上我在这里描述的每一件事,都在本教程中。

对于该sf_guard_user字段,您应该将其重新定义为隐藏,然后为当前连接的用户设置一个默认值。

创建一个新表单:/lib/form/CustomSongForm.class.php

<?php

class CustomSongForm extends SongForm
{
  public function configure()
  {
    parent::configure();

    $this->widgetSchema['sf_guard_user_ud'] = new sfWidgetFormInputHidden();
  }
}

然后你可以定义默认值,就像你说的:

}$this->form->setDefault('sf_guard_user_id', $this->getUser()->getId());
于 2012-09-26T11:46:43.703 回答