Symfony 提交按钮不起作用 IsSubmitted 从未验证
Symfony Submit button doesn't work IsSubmitted never verified
我正在学习 symfony 4,我正在测试如何通过从表单中获取数据来更新数据库。似乎 isSubmitted 从未经过验证。
这是我的控制器
/**
* @Route("scheduler/new", name="scheduler_create")
* @Route("scheduler/{id}/edit", name="scheduler_edit")
*/
public function form(Task $task = null, Request $request, EntityManagerInterface $manager){
if(!$task) {
$task = new Task();
}
$form = $this->createForm(TaskType::class, $task);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$manager->persist($task);
$manager->flush();
return $this->redirectToRoute('scheduler_show', ['id' => $task-> getId()]);
}
return $this->render('scheduler/create.html.twig', [
'formTask' => $form->createView(),
'editMode'=> $task->getId() !== null
]);
}
我的看法:
{% extends 'base.html.twig' %}
{% form_theme formTask 'bootstrap_4_layout.html.twig' %}
{% block body %}
<h1> Création d'une tâche </h1>
{{ form_start(formTask) }}
<p>
Inscrire ici le nom souhaité pour la tâche : {{form(formTask.title, {'attr' : {'placeholder' : "Titre de la tâche"} }) }}
Veuillez d'écrire l'objet de la tâche : {{form(formTask.content, {'attr' : {'placeholder' : "Description de la tâche"} }) }}
Séléctionner le groupe destinataire de la tâche : {{form(formTask.groupe) }}
</p>
<p> A quelle date et souhaitez vous executer la tâche ? {{form(formTask.launch_date) }} </p>
{{form(formTask.activer) }}
<button type="submit" class="btn btn-success">
{% if editMode %}
Sauvegarder les modifications
{% else %}
Sauvegarder la tâche
{% endif %}
</button>
{{ form_end(formTask) }}
{% endblock %}
我已经使用 symfony 工作了 2 周,所以时间不长。
我正在关注在线教程,它一直有效
我看不到任何错误消息,也不知道该如何解决。
这是我的表单类型:
<?php
namespace App\Form;
use App\Entity\Task;
use App\Entity\Groupe;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('launch_date', DateTimeType::class)
->add('content')
->add('activer')
->add('groupe', EntityType::class, [
'class' => Groupe::class,
'choice_label' => 'title'
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Task::class,
]);
}
}
要使这样的按钮起作用,它必须位于 {{ form_start(your_form) }} {{ form_end(your_form) }}
树枝标签内
否则不算作表单提交按钮
你可以使用 $builder->add('submit', SubmitType::class);
来检查这个
讨论后编辑:
要自定义表单行的呈现,应使用 form_row(form.children)
而不是 form(form.children)
,因为这将显示所有信息,例如表单错误。
更精确的处理可以参考the symfony documentation
我正在学习 symfony 4,我正在测试如何通过从表单中获取数据来更新数据库。似乎 isSubmitted 从未经过验证。
这是我的控制器
/**
* @Route("scheduler/new", name="scheduler_create")
* @Route("scheduler/{id}/edit", name="scheduler_edit")
*/
public function form(Task $task = null, Request $request, EntityManagerInterface $manager){
if(!$task) {
$task = new Task();
}
$form = $this->createForm(TaskType::class, $task);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$manager->persist($task);
$manager->flush();
return $this->redirectToRoute('scheduler_show', ['id' => $task-> getId()]);
}
return $this->render('scheduler/create.html.twig', [
'formTask' => $form->createView(),
'editMode'=> $task->getId() !== null
]);
}
我的看法:
{% extends 'base.html.twig' %}
{% form_theme formTask 'bootstrap_4_layout.html.twig' %}
{% block body %}
<h1> Création d'une tâche </h1>
{{ form_start(formTask) }}
<p>
Inscrire ici le nom souhaité pour la tâche : {{form(formTask.title, {'attr' : {'placeholder' : "Titre de la tâche"} }) }}
Veuillez d'écrire l'objet de la tâche : {{form(formTask.content, {'attr' : {'placeholder' : "Description de la tâche"} }) }}
Séléctionner le groupe destinataire de la tâche : {{form(formTask.groupe) }}
</p>
<p> A quelle date et souhaitez vous executer la tâche ? {{form(formTask.launch_date) }} </p>
{{form(formTask.activer) }}
<button type="submit" class="btn btn-success">
{% if editMode %}
Sauvegarder les modifications
{% else %}
Sauvegarder la tâche
{% endif %}
</button>
{{ form_end(formTask) }}
{% endblock %}
我已经使用 symfony 工作了 2 周,所以时间不长。 我正在关注在线教程,它一直有效 我看不到任何错误消息,也不知道该如何解决。
这是我的表单类型:
<?php
namespace App\Form;
use App\Entity\Task;
use App\Entity\Groupe;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('launch_date', DateTimeType::class)
->add('content')
->add('activer')
->add('groupe', EntityType::class, [
'class' => Groupe::class,
'choice_label' => 'title'
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Task::class,
]);
}
}
要使这样的按钮起作用,它必须位于 {{ form_start(your_form) }} {{ form_end(your_form) }}
树枝标签内
否则不算作表单提交按钮
你可以使用 $builder->add('submit', SubmitType::class);
讨论后编辑:
要自定义表单行的呈现,应使用 form_row(form.children)
而不是 form(form.children)
,因为这将显示所有信息,例如表单错误。
更精确的处理可以参考the symfony documentation