[英]Symfony 4.1.4 isSubmitted() doesn't work on rendered form
所以我有这个简单的形式:
class CreditType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('credits', EntityType::class, [
'class' => Product::class,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('product')
->orderBy('product.amount');
},
'expanded' => true,
'choice_label' => function ($key) {
return $key->amount.' credits voor maar '.$key->price;
}
]);
}
}
我在以下控制器中使用的:
public function credits(Request $request)
{
$form = $this->createForm(CreditType::class);
$form->handleRequest($request);
if ($form->isSubmitted()) {
throw new \Exception('It works!');
}
return $this->render(
'credits/credits_widget.html.twig',
[
'form' => $form->createView(),
]
);
}
并在我的XXX.html.twig中使用它
{{ render(controller('App\\Controller\\DetailsController:credits')) }}
我已经和symfony一起工作了四个星期,所以没有那么久。
我只想在表单没有提交任何内容的情况下调用某些函数,如果我在if语句中没有放置任何内容,则此刻它不会引发任何异常。 渲染表单时我看不到东西吗?
编辑:我的credits_widget.html.twig
{% block credits %}
{{ form_start(form.credits) }}
{{ form_widget(form.credits) }}
{% if app.user %}
<button type="submit">Koop nu!</button>
{% else %}
<a href="#login-form"><button type="button">Login en koop</button></a>
<a href="{{ path('user_registration') }}"><button type="button">Registreer en koop</button></a>
{% endif %}
{{ form_end(form.credits) }}
{% endblock %}
问题在于,该表单是在不执行任何操作的情况下呈现的,并且在提交时默认情况下将其提交到呈现该表单的根路由。 因此,并未调用功劳行动。 您应该像这样更改表单的操作:
public function credits(Request $request)
{
// set current url path as form's action
$form = $this->createForm(CreditType::class, null, , [
'action' => $request->getRequestUri()
]);
$form->handleRequest($request);
if ($form->isSubmitted()) {
throw new \Exception('It works!');
}
return $this->render(
'credits/credits_widget.html.twig',
[
'form' => $form->createView(),
]
);
}
编辑 :您当前正在渲染子窗体form.credits
当您应该真正渲染从控制器传递的窗体时。 您的credits_widget.html.twig模板应如下所示:
{% block credits %}
{{ form_start(form) }}
{{ form_widget(form) }}
{% if app.user %}
<button type="submit">Koop nu!</button>
{% else %}
<a href="#login-form"><button type="button">Login en koop</button></a>
<a href="{{ path('user_registration') }}"><button type="button">Registreer en koop</button></a>
{% endif %}
{{ form_end(form) }}
{% endblock %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.