Symfony2与控制器分离的原始格式

埃斯特拉

我使用了该./app/console generate:doctrine:crud命令,并注意到它是如何在控制器中创建新方法的:“ createCreateForm”,“ createEditForm”和“ createDeleteForm”。有没有一种方法可以在单个FormType中创建这些原始表单?

当我们查看生成的createEditForm方法时,它看起来像这样:

private function createEditForm(MyEntity $entity)
{
    $form = $this->createForm(new FormType(), $entity, array(
        'action' => $this->generateUrl('MyEntity_update', array('id' => $entity->getId())),
        'method' => 'PUT',
    ));

    $form->add('submit', 'submit', array('label' => 'Update'));

    return $form;
}

.php中buildForm方法FormType

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name')
        ->add('description')
        ->add('save', 'submit')
    ;
}

有没有更好的做法,例如将设置直接传递给buildForm方法?

伍特

您可以使用FormTypeInterface#setDefaultOptions

use Symfony\Component\OptionsResolver\OptionsResolverInterface;

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'method' => 'PUT',
    ));
}

您不应该使用action选项来执行此操作,因为那应该由您的控制器定义。您的表单类型不应该知道您的应用程序的URL体系结构。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章