11
votes

Symfony2 Formulaire répété Étiquettes personnalisées

J'utilise symfony2 et CRAUEFORFLOWBUNDLE pour créer un formulaire en plusieurs étapes. Tout se passe bien sauf pour le champ de messagerie répété. Je ne peux pas, pour moi, trouvez comment mettre les étiquettes que je veux. Je rends le formulaire par moi-même dans la vue de la branche en utilisant form_widget (...) et écrivez les étiquettes. Je positionne tout ce qui suit ce que mon client veut. Maintenant, il souhaite voir les étiquettes de courrier électronique comme "e-mail *" et "Confirmer E-mail *" (les stars depuis leur requis). Si je rends les éléments répétés à l'aide de form_row (), les erreurs ne sont plus affichées sur le formulaire (mais j'ai le contrôle des étiquettes, SNAP). Le seul moyen d'erreurs sont affichés (ne me demandez pas pourquoi) est en utilisant form_widget (form.giver.email) qui pointe vers l'objet d'élément répété. Le problème est, en utilisant le formulaire_widget pour rendre l'élément répété entier ne me donne aucun contrôle sur les étiquettes.

En rendant l'élément répété entier, il imprime les étiquettes à l'aide des paramètres "PREMIER_NAME" et "Nom de nouveau_Name". Je ne peux pas mettre des lettres majuscules ni des tirets ni des étoiles dans ces paramètres pour des raisons évidentes. Si j'essaie de définir l'étiquette dans la matrice Options, cette étiquette est transmise aux deux champs, comme décrit dans la DOC Symfony2 Doc ... P>

J'ai essayé d'imprimer en utilisant le ".first" et ".seconde" dans brindille, mais je reçois une erreur indiquant que celles-ci n'existent pas dans FormView. P>

Tout ce que je veux, c'est de pouvoir définir les deux étiquettes séparément! Voici mon code actuel: p> xxx pré>

ceci imprime les étiquettes comme "email" et "confirmer". Voici l'utilisation du tableau "Options": P>

$builder->add('email', 'repeated', array(
        'type' => 'email',
        'first_name' => 'email',
        'second_name' => 'confirm',
        'invalid_message' => 'The e-mails you provided did not match.',
        'error_bubbling' => false,
        'options' => array(
            'label' => "TESTTT"
        ),
    ));


0 commentaires

7 Réponses :


0
votes

Essayez Ajouter le nom de champ et l'étiquette dans le fichier Traductions? Par exemple. Craueformflowbundle.en.yml


0 commentaires

6
votes
{{ form_label(form.password.confirmpassword, 'Confirm Password') }}

0 commentaires

5
votes

Utilisez

$formView->getChild('passwordFieldName')->getChild('second')->set('label', 'Enter password again');


1 commentaires

Si l'on fonctionne dans le FormBuilder (ou Types de formulaire), la syntaxe serait $ FormBuilder-> obtenez ("PasswordfieldName") -> Obtenez ('secondaire') -> Setat Tribute ( 'Label', 'Entrez à nouveau le mot de passe');



-1
votes

Quelqu'un se demande pourquoi la personnalisation des entrées de formulaire réputées ne fonctionne pas, vérifiez ceci:

$builder->add('username', 'text')
            ->add('email', 'email')
            ->add('password', 'repeated', 
             array('type' => 'password', 
                'first_name'=>'Password', 
                'second_name' =>'Confirm password'));


0 commentaires

2
votes
{{ form_errors(form.password.first) }}
{{ form_widget(form.password.first) }}
{{ form_label(form.password.first) }}

{{ form_errors(form.password.second) }}
{{ form_widget(form.password.second) }}
{{ form_label(form.password.second) }}

0 commentaires

11
votes

Il est plus facile et correct:

->add('plainPassword', 'repeated', array(
    'type' => 'password',
    'invalid_message' => "some.error.message",
    'first_name' => 'somecoorectname', // (optional). 'first' value by default. 
    'first_options' => array(
        'label' => 'label.for.future.translate' // Custom label for element 
    )
    /*
       The same way for Second field
     */
))


3 commentaires

Cela ne fonctionne pas avec Symfony2.0. C'est dans la branche principale (> = 2.1?) Mais pas dans la branche 2.0.


Oui, cela ne fonctionne que avec Symfony 2.1. L'autre méthode mentionnée dans la réponse acceptée ne fonctionne plus en 2.1.


Génial, ça marche comme un charme! Mon code: $ Builder-> Ajouter ("Mot de passe", "répété", Array ("Type '=>" Mot de passe "," Premier_Name "=>" Mot de passe ",' second_name '=>" Confirable ",' Invalid_Message '=" > "Mots de passe ne correspond pas", 'first_options' => tableau ('étiquette' => "mot de passe"), 'second_options' => tableau ("étiquette '=>" Répéter le mot de passe ")));



4
votes

L'exemple suivant a fonctionné pour moi.

  • ici la déclaration de type "type": XXX

  • et ici l'utilisation 'Twig' ' XXX


0 commentaires