这是我想要实现的目标。我正在使用SymfonyContrib\Bundle\LinkButtonBundle\LinkButtonBundle
在提交按钮旁边的表单中添加简单的后退/取消链接。问题是我不知道如何到达我的路由器,以便我可以使用generate方法生成路由URL。任何人都知道如何将路由器注入我的表单或从我的控制器传递URL,其中表单是使用$this->createform('my_form_foo')
<?php
namespace My\Form;
use \Symfony\Component\Form\AbstractType;
use \Symfony\Component\Form\FormBuilderInterface;
class Foo extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'username',
null,
[
'label' => 'Username',
'attr' => [
'placeholder' => 'User name',
],
'required' => true
]
)
->add('actions', 'form_actions', [
'buttons' => [
'save' => [
'type' => 'submit'
],
'cancel' => [
'type' => 'button',
'options' => [
'url' => '/', // This needs to be generated from a route
'label' => 'Back'
]
],
]
]);
}
/**
* @return string
*/
public function getName()
{
return 'my_form_foo';
}
}
答案 0 :(得分:1)
如果您在服务容器中将表单注册为服务,则可以将路由器注入表单类。
答案 1 :(得分:1)
在您的具体情况下,直接在视图中添加按钮是一种更好的做法。
(类似的东西)
{{ form_start(form) }}
{{ form_widget(form) }}
<button type="submit" value="Save" />
<a href="{{ path('name_route') }}" role="button">Back</a>
{{ form_end(form) }}
答案 2 :(得分:0)
我建议您管理Controller类中的所有表单操作。如上所述in the doc here,您可以添加流量控制按钮:
$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
}
希望这个帮助