Php 在Symfony表单类中使用路由器
以下是我想要实现的目标。我正在使用Php 在Symfony表单类中使用路由器,php,symfony,Php,Symfony,以下是我想要实现的目标。我正在使用SymfonyContrib\Bundle\LinkButtonBundle\LinkButtonBundle将一个简单的后退/取消链接添加到提交按钮旁边的表单中。问题是我不知道如何到达我的路由器,以便我可以使用generate方法生成路由url。任何人都知道如何将路由器注入我的表单,或者从我的控制器传递URL,在那里,表单是用$this->createform('my\u form\u foo')创建的。 如果在服务容器中将表单注册为服务,则可以将路由器注入表
SymfonyContrib\Bundle\LinkButtonBundle\LinkButtonBundle
将一个简单的后退/取消链接添加到提交按钮旁边的表单中。问题是我不知道如何到达我的路由器,以便我可以使用generate方法生成路由url。任何人都知道如何将路由器注入我的表单,或者从我的控制器传递URL,在那里,表单是用$this->createform('my\u form\u foo')创建的。
如果在服务容器中将表单注册为服务,则可以将路由器注入表单类
请参阅:在您的特定情况下,最好直接在视图中添加按钮
(差不多)
{{form_start(form)}
{{form_widget(form)}
{{form_end(form)}}
我建议您管理Controller类中的所有表单操作。如上所述,您可以添加流控制按钮:
$form = $this->createFormBuilder($task)
->add('name', 'text')
->add('save', 'submit')
->add('save_and_add', 'submit')
->getForm();
并将控制器中的流管理为:
if ($form->isValid()) {
// ... do something
// the save_and_add button was clicked
if ($form->get('save_and_add')->isClicked()) {
// probably redirect to the add page again
}
// redirect to the show page for the just submitted item
}
希望此帮助如果您的表单已注册为服务(根据my\u form\u foo
判断,情况似乎是这样),只需使用参数
选项传递路由器,或者使用createForm
的第三个参数,从$options
@Artamiel访问生成的URL我可以使用什么选项,因为我似乎不能添加任意选项,因为它抛出“选项…不存在”当我刚刚添加一个“back\u url”选项时。您需要在默认选项中至少包含带有null
值的选项。
$form = $this->createFormBuilder($task)
->add('name', 'text')
->add('save', 'submit')
->add('save_and_add', 'submit')
->getForm();
if ($form->isValid()) {
// ... do something
// the save_and_add button was clicked
if ($form->get('save_and_add')->isClicked()) {
// probably redirect to the add page again
}
// redirect to the show page for the just submitted item
}