Php 处理请求后更改Symfony表单操作
我得到了一个symfony2表单,它是使用createForm创建的。表单验证后,我需要修改最初设置的操作。这可能吗Php 处理请求后更改Symfony表单操作,php,symfony,Php,Symfony,我得到了一个symfony2表单,它是使用createForm创建的。表单验证后,我需要修改最初设置的操作。这可能吗 $formData = $this->loadData($id); // Form builder $form = $this->createForm(new ComposeForm(), $formData, [ 'action' => $$this->generateUrl('defaultAction') ]); // Processin
$formData = $this->loadData($id);
// Form builder
$form = $this->createForm(new ComposeForm(), $formData, [
'action' => $$this->generateUrl('defaultAction')
]);
// Processing form
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$myVar = $form->get('myVar')->isClicked();
if ($myVar) {
// Can I change the form action here??
}
}
在控制器中非常简单:
if ($myVar) {
$form->setAction($this->generateUrl('target_route'))
}
但我看不出这样做的意义。在控制器中这是非常直接的:
if ($myVar) {
$form->setAction($this->generateUrl('target_route'))
}
但是我看不出这样做有什么意义。你为什么要这样做?表单通常由一个操作处理。有两个提交按钮可触发不同的操作。在这两种情况下,我都想通过POST提交表格,因此重定向似乎不是一个选项。您能详细解释一下您想在问题中做什么吗?我猜你的目标走错了方向,但我不知道你想要实现什么。我很想知道我发布的内容是否可行,因为我在任何地方都找不到如何实现。也许,正如你所指出的,用这种方法解决问题不是一个好主意。你为什么要这样做?表单通常由一个操作处理。有两个提交按钮可触发不同的操作。在这两种情况下,我都想通过POST提交表格,因此重定向似乎不是一个选项。您能详细解释一下您想在问题中做什么吗?我猜你的目标走错了方向,但我不知道你想要实现什么。我很想知道我发布的内容是否可行,因为我在任何地方都找不到如何实现。可能,正如您所指出的,这样解决问题不是一个好主意。以前尝试过,我得到了:致命错误:调用未定义的方法Symfony\Component\Form\Form::setAction()$this->createForm()做什么?该方法包含在控制器类中,基本上它创建了一个表单实例。为什么setAction不起作用,我不确定。之前尝试过,我得到了:致命错误:调用未定义的方法Symfony\Component\Form\Form::setAction()$this->createForm()有什么作用?该方法包含在Controller类中,基本上它创建了一个表单实例。为什么setAction不起作用,我不确定。