PHP Symfony 1.4表单未在我的模板上呈现

时间:2014-02-24 01:08:30

标签: php symfony-1.4 symfony-forms

我是symfony php框架的新手。我遵循symfony文档,这对开发人员来说是一个很好的资源。据说我创建了一个模块并声明了一个symfony表单并将其传递给模板。但是它没有渲染。为什么?以下是我的代码。

的actions.class.php

<?php

class frontendActions extends sfActions
{
public function executeIndex()
{
  $this->form = new LoginForm();
}
} 

indexSuccess.php的

<form action="<?php echo url_for('frontend/submit') ?>" method="POST">
<table>
<?php echo $form;?>
<tr>
  <td colspan="2">
    <input type="submit" />
  </td>
</tr>
</table>
</form>

我在lib / form文件夹中的自定义表单

<?php

class LoginForm extends BaseForm
{
public function configure()
{
$this->setWidgets(array(
  'username'    => new sfWidgetFormInputText(),
  'password'   => new sfWidgetFormInputText(),
));
}
}

这里我有点困惑。因为symfony项目中有两个lib文件夹。一个在app文件夹之外。其他人在app文件夹里面。无论如何我将我的自定义表单文件放在app文件夹中。我尝试过把它移到lib文件夹外面。但两种方式都没有用。

2 个答案:

答案 0 :(得分:0)

要给出完整的答案,您可以复制routing.yml文件吗?我认为问题出在url_for()中,如果你没有前端/提交路由,它会抛出异常停止执行。看看apache / php错误日志。

关于LoginForm应该是的文件夹,请按照以下步骤操作(将'frontend'视为应用名称,将'my_module'视为模块名称'):

  1. 这是一个仅在模块内使用的类=&gt;使用module的lib文件夹(例如/ apps / frontend / modules / my_module / lib)
  2. 这是在同一app =&gt;的几个模块中使用的类。使用app的lib文件夹(例如/ apps / frontend / lib)
  3. 这是几个应用程序使用的类=&gt;使用/ lib文件夹
  4. 您可以将一个类从一个文件夹移动到另一个文件夹,并记住刷新symfony缓存。

答案 1 :(得分:0)

这是我想到的解决方案。我首先通过扩展symfony基本形式创建了一个单独的表单类。在那一点上,我的表单没有工作。所以我添加了表单&#39; s控制器的操作方法中的属性,而不是在单独的文件中定义它。现在它正常工作。

class loginActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/
public function executeIndex(sfWebRequest $request)
{
  $this->form = new sfForm();
  $this->form->setWidgets(array(
   'name'    => new sfWidgetFormInputText(),
   'password'   => new sfWidgetFormInputPassword(),
  ));
}


}