web-dev-qa-db-ja.com

symfony3:フォームの名前を変更することは可能ですか?

Symfony 2.7を使用すると、getName()メソッドでEntityTypeクラスのフォームの名前をカスタマイズできます
これは現在非推奨です。 Symfony 3.でそれを行う別の方法はありますか?
さまざまな形式で使用する必要があるコレクションのカスタムプロトタイプentry_rowsがあります。
行の名前はフォームの名前に基づいているため、別のフォームで使用するには、後で変更する必要があります。

16
Roubi

移行ガイド here で説明されているように、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";
}

この助けを願っています

31
Matteo

フォームの作成方法に応じて、フォームの名前を設定する方法はいくつかあります。

$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をご覧ください。

24
chalasr