Symfony2 处理表单提交 Class
Symfony2 Handling Submit in Form Class
这是我的疑问:
所以我根据文档创建了表单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) 中提示您该做什么,但它什么也没说(或者我找不到它) 关于在使用表单时具体在哪里以及如何处理提交 class。一点帮助将不胜感激。
提前致谢
使用了表单类型,这样您就不必一直创建相同的表单,或者只是为了将内容分开。
表单操作仍然在控制器中处理。
鉴于您的示例表单类型 class,类似于;
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 表格。
如果你需要给你的表单一些post验证逻辑,你可以创建一个表单处理程序,它也将嵌入验证或监听 Doctrine 事件。
但这只是更复杂用法的提示 ;)
否则,Rooneyl 的答案就是您要找的。
这是我的疑问:
所以我根据文档创建了表单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) 中提示您该做什么,但它什么也没说(或者我找不到它) 关于在使用表单时具体在哪里以及如何处理提交 class。一点帮助将不胜感激。
提前致谢
使用了表单类型,这样您就不必一直创建相同的表单,或者只是为了将内容分开。
表单操作仍然在控制器中处理。
鉴于您的示例表单类型 class,类似于;
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 表格。
如果你需要给你的表单一些post验证逻辑,你可以创建一个表单处理程序,它也将嵌入验证或监听 Doctrine 事件。
但这只是更复杂用法的提示 ;)
否则,Rooneyl 的答案就是您要找的。