web-dev-qa-db-fra.com

Symfony3: est-il possible de changer le nom d'un formulaire?

Avec Symfony 2.7, vous pouvez personnaliser le nom d'un formulaire dans votre classe EntityType avec la méthode getName()
Ceci est désormais obsolète. Existe-t-il une autre façon de le faire avec Symfony 3.?
J'ai un prototype de lignes d'entrée personnalisées pour les collections que je devrais utiliser sous différentes formes.
Étant donné que le nom des lignes est basé sur le nom du formulaire, je devrais changer la dernière afin de les utiliser avec un formulaire différent.

16
Roubi

Vous devez implémenter la méthode getBlockPrefix au lieu de getName comme décrit dans le guide de migration ici .

Comme exemple:

/**
 * 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";
}

J'espère que cette aide

31
Matteo

Selon la façon dont votre formulaire est créé, il existe différentes façons de définir le nom de votre formulaire.

Si vous créez le formulaire via $this->createForm(CustomType::class):

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

Si vous créez le formulaire à partir du contrôleur directement via $this->createFormBuilder():

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

Consultez les API FormFactory et FormBuilder pour plus d'informations.

24
chalasr