我使用了该./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] 删除。
我来说两句