11

Symfony2 とCraueFormFlowBundleを使用していますマルチステップ フォームを作成します。私の繰り返しの電子メールフィールドを除いて、すべてがうまくいっています。私は、私のために、私が望むラベルを付ける方法を見つけることができません。form_widget(...) を使用して Twig ビューで自分でフォームをレンダリングし、ラベルを書いています。私はクライアントが望むものに従ってすべてを配置します。ここで、彼は電子メールのラベルを「電子メール*」および「電子メールの確認*」として表示したいと考えています (星は必須であるため)。form_row() を使用して繰り返し要素をレンダリングすると、フォームにエラーが表示されなくなります (ただし、ラベル、スナップを制御できます)。エラーが表示される唯一の方法は (理由は聞かないでください)、繰り返される要素オブジェクト全体を指す form_widget(form.giver.email) を使用することです。問題は、form_widget を使用して繰り返される要素全体をレンダリングすることで、ラベルを制御できないことです。

繰り返される要素全体をレンダリングすることにより、「first_name」および「second_name」パラメーターを使用してラベルを出力します。明らかな理由により、これらのパラメーターに大文字、ダッシュ、星を入れることはできません。オプション配列にラベルを設定しようとすると、Symfony2 doc で説明されているように、そのラベルが両方のフィールドに渡されます...

twig で ".first" と ".second" を使用して印刷しようとしましたが、これらが FormView に存在しないというエラーが表示されます。

今私が欲しいのは、2 つのラベルを別々に設定できることだけです! これが私の現在のコードです:

$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
    ));

これにより、ラベルが「email」および「confirm」として出力されます。ここでは、「オプション」配列を使用しています。

$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"
        ),
    ));

これにより、両方の繰り返しフィールドに「TESTTT」ラベルが印刷されます。これについて私にできることはありますか?上記のように、フォームの送信時に form_row() を使用しても、メールが等しくない場合や空白の場合、エラーは表示されません。したがって、 form_widget() を使用して、繰り返されるオブジェクト全体をレンダリングする必要があります。

お時間をいただきありがとうございます。

4

7 に答える 7

11

もっと簡単で正しい方法があります:

->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
     */
))

楽しみ!

于 2012-05-18T08:41:23.427 に答える
6
{{ form_label(form.password.confirmpassword, 'Confirm Password') }}
于 2012-01-21T21:11:54.583 に答える
5

使用する

$formView->getChild('passwordFieldName')->getChild('second')->set('label', 'Enter password again');
于 2012-01-24T13:48:14.777 に答える
4

次の例は私にとってはうまくいきました。

  • ここで 'type' 宣言:

    $builder->add('username', 'text')
            ->add('email', 'email')
            ->add('password', 'repeated', 
            array('type' => 'password'));
    
  • そしてここで「小枝」の使用

    {{ form_errors(form.password.first) }}
    {{ form_widget(form.password.first) }}
    {{ form_label(form.password.first, 'Password') }}
    
    {{ form_errors(form.password.second) }}
    {{ form_widget(form.password.second) }}
    {{ form_label(form.password.second, 'Confirm password') }}
    
于 2012-06-14T13:04:00.033 に答える
2
$builder->add('username', 'text')
            ->add('email', 'email')
            ->add('password', 'repeated', 
             array('type' => 'password', 
                'first_name'=>'Password', 
                'second_name' =>'Confirm password'));

は正しくありません。試してみてください

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

そして、あなたは使用できるようになります:

{{ 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) }}
于 2012-05-09T10:32:37.697 に答える
0

翻訳ファイルにフィールド名とラベルを追加してみてください。例: CraueFormFlowBundle.en.yml

于 2011-11-04T19:13:58.687 に答える
-1

カスタマイズされた繰り返しフォーム入力が機能しない理由を知りたい人は、これをチェックしてください。

$builder->add('username', 'text')
            ->add('email', 'email')
            ->add('password', 'repeated');

次のように呼び出すことができる「最初の」パスワードと「2番目の」パスワードを提供します。

{{ 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) }}

でもこれは:

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

しません!!!

于 2012-04-04T14:17:06.840 に答える