我是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文件夹外面。但两种方式都没有用。
答案 0 :(得分:0)
要给出完整的答案,您可以复制routing.yml文件吗?我认为问题出在url_for()中,如果你没有前端/提交路由,它会抛出异常停止执行。看看apache / php错误日志。
关于LoginForm应该是的文件夹,请按照以下步骤操作(将'frontend'视为应用名称,将'my_module'视为模块名称'):
您可以将一个类从一个文件夹移动到另一个文件夹,并记住刷新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(),
));
}
}