Как повторно использовать формы с некоторыми полями, пропущенными в Symfony2 - PullRequest
4 голосов
/ 11 октября 2011

Я использую встроенные формы, чтобы иметь возможность сделать регистрационную форму, которая содержит поля нескольких связанных объектов. Как мне объяснили в моем вопросе здесь:
Форма Symfony2, где объекты данных не совпадают точно с тем, что необходимо заполнить

Это работает просто отлично. Но, скажем, я хочу повторно использовать одну из встроенных форм, но пропустить некоторые поля.
Тогда какие у меня варианты?

  • Создать ли дополнительный тип formType, который расширяет исходный?
  • Решаю ли я в представлении пропустить некоторые поля?

По моему мнению, это не похоже на решение о взгляде. А расширение для каждого отдельного варианта использования кажется мне плохой практикой повторного использования.
Как другие люди решают это?

Спасибо

Dieter

Ответы [ 2 ]

4 голосов
/ 11 октября 2011

Я думаю, что лучшее решение - создать базовый абстрактный тип и позволить вашим типам расширять его. Вот краткий пример:

namespace Acme\Bundle\DemoBundle\Form\Type;

use Symfony\Component\Form\AbstractType;

abstract FooBaseType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        // Add all fields common for your other types.
    }
}

Теперь вы можете просто расширить его, добавив пропущенные поля

namespace Acme\Bundle\DemoBundle\Form\Type;

class ExampleType extends FooBaseType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        parent::buildForm($builder, $options);
        // Your missing fields
    }
}
2 голосов
/ 19 октября 2011

см. Этот запрос на github: https://github.com/symfony/symfony-docs/pull/765

похоже, это именно то, что вы ищете.

...