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
}