这是我的疑问:
所以我根据文档创建了Form Class: http://symfony.com/doc/current/book/forms.html#creating-form-classes
// src/AppBundle/Form/Type/TaskType.php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('task')
->add('dueDate', null, array('widget' => 'single_text'))
->add('save', 'submit');
}
public function getName()
{
return 'task';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Task',
));
}
}
但是我无法弄清楚提交处理程序的位置。在http://symfony.com/doc/current/book/forms.html#handling-form-submissions中将其置于控制器中,与其他所有内容一起,并在(...#forms-and-doctrine)中提示您该怎么做,但它没有说什么(或者我无法做出任何事情) ;找到它)关于在你使用表单类时究竟在哪里以及如何处理提交。一点帮助将不胜感激。
提前谢谢
答案 0 :(得分:2)
使用表单类型,因此您不必继续创建相同的表单,或只是为了保持独立。
表格操作仍在控制器中处理 给出你的示例表单类型类,类似于;
public function taskAction(Request $request)
{
// build the form ...
$type = new Task();
$form = $this->createForm(new TaskType(), $type);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// do whatever you want ...
$data = $form->getData(); // to get submitted data
// redirect, show twig, your choice
}
// render the template
}
请查看Symfony best practices表单。
答案 1 :(得分:0)
如果您需要为表单提供一些后验证逻辑,您可以创建一个表单处理程序,它还将嵌入验证或监听Doctrine事件。
但这只是一个更复杂的使用方法;)
否则,Rooneyl的答案正是您所寻找的。 p>