我使用了./app/console generate:doctrine:crud
命令并注意到它是如何在我的控制器中创建新方法的:" createCreateForm"," createEditForm"和" createDeleteForm"。有没有办法在单个FormType中创建这些crud表单?
当我们查看生成的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;
}
buildForm
中的FormType
方法.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('description')
->add('save', 'submit')
;
}
是否有更好的做法,比如直接将设置传递给buildForm方法?
答案 0 :(得分:1)
您可以使用FormTypeInterface#setDefaultOptions
:
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'method' => 'PUT',
));
}
您不应该使用操作选项执行此操作,因为这应该由您的控制器定义。您的表单类型不应该知道您的应用程序的URL体系结构。
答案 1 :(得分:1)
这些应保留在此处,请记住symfony2使用mvc模式,因此应用程序的实体不应包含与视图或控制器相关的代码。