Symfony2 Отдельная грубая форма от контроллера

0

Я использовал команду ./app/console generate:doctrine:crud и заметил, как он создал новые методы в моем контроллере: "createCreateForm", "createEditForm" и "createDeleteForm". Есть ли способ создать эти формы crud внутри одного 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;
}

Метод buildForm в FormType.php

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

Есть ли более эффективная практика, например, передача параметров непосредственно методу buildForm?

Теги:

2 ответа

1
Лучший ответ

Вы можете использовать FormTypeInterface#setDefaultOptions:

use Symfony\Component\OptionsResolver\OptionsResolverInterface;

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

Вы не должны делать это с помощью опции действия, как то, что должно быть определено вашим контроллером. Тип формы не должен знать о архитектуре URL вашего приложения.

  • 0
    Спасибо. Я полагаю, что FormType должен использоваться повторно в каждом сценарии, в котором используется объект.
1

Они должны оставаться здесь, помните, что symfony2 использует шаблон mvc, поэтому сущности вашего приложения не должны содержать код, связанный с представлениями или контроллерами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню