Symfony2处理提交表单类

时间:2015-01-27 16:41:26

标签: php forms symfony doctrine-orm submit

这是我的疑问:

所以我根据文档创建了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)中提示您该怎么做,但它没有说什么(或者我无法做出任何事情) ;找到它)关于在你使用表单类时究竟在哪里以及如何处理提交。一点帮助将不胜感激。

提前谢谢

2 个答案:

答案 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的答案正是您所寻找的。