Symfony3: можно ли изменить название формы?

С Symfony 2.7 вы можете настроить имя формы в своем классе EntityType с помощью метода getName()
Это теперь устарело. Есть ли другой способ сделать это с помощью Symfony 3.0?
У меня есть собственный прототип entry_rows для коллекций, который мне нужно будет использовать в разных формах.
Поскольку имя строк основано на имени формы, мне нужно будет изменить позже, чтобы использовать их в другой форме.

Ответ 1

Вы должны реализовать метод getBlockPrefix вместо getName как описано в руководстве по миграции здесь.

Как пример:

/**
 * Returns the prefix of the template block name for this type.
 *
 * The block prefix defaults to the underscored short class name with
 * the "Type" suffix removed (e.g. "UserProfileType" => "user_profile").
 *
 * @return string The prefix of the template block name
 */
public function getBlockPrefix()
{
    return "form_name";
}

Надеюсь это поможет

Ответ 2

В зависимости от того, как создается ваша форма, существуют разные способы задать имя вашей формы.

Если вы создаете форму через $this->createForm(CustomType::class):

$formFactory = $this->get('form.factory');
$form = $formFactory->createNamed('custom_form_name', CustomType::class);

Если вы создаете форму с контроллера непосредственно через $this->createFormBuilder():

$formFactory = $this->get('form.factory');
$form = $formFactory->createNamedBuilder('custom_form_name', CustomType::class);

Посмотрите FormFactory и FormBuilder API для получения дополнительной информации.