2017-08-17 7 views
0

私はsymfonyの私の連絡先フォームにrecaptchaシステムを持っています。そのために私はEWZRecaptchaBundleを使用します。しかし、私はrecaptchaを実行するためのたくさんのものを試していますが、私のフォームは、検証recaptchaウィジェット(目に見えないと可視)をテストせずに実行されますsymfonyのEWZRecaptchaBundleを使ったRecaptcha google

recaptchaを正しく実行するのを助けてくれますか?私の送信フォームはrecaptchaを扱わずに実行されますが、私はウィジェットを正しく表示しています。

config.yml

ewz_recaptcha: 
    public_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
    private_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
    locale_key: %kernel.default_locale% 
    locale_from_request: false 
    enabled: true 
    verify_host: true 
    ajax: false 

ContactType

 ->add('recaptcha', EWZRecaptchaType::class, array(
      'attr' => array(
       'options' => array(
        'theme' => 'light', 
        'type' => 'image', 
        'size' => 'invisible', 
        'defer' => true, 
        'async' => true, 
        'callback' => 'onReCaptchaSuccess', 
        'bind' => 'contact_submit', 
       ) 
      ), 
      'mapped'  => false, 
      'constraints' => array(
       new RecaptchaTrue() 
      ) 
      ) 
     ) 

//  ->add('recaptcha', EWZRecaptchaType::class) 

     ->add('submit', SubmitType::class, [ 
      'label' => 'form.submit.send', 
      'attr' => ['class' => 'btn1 form_recaptcha_submit', 'id' => 'contact_submit'] 
     ]) 

小枝テンプレート

{{ form_widget(form.recaptcha, { 'attr': { 
     'options' : { 
      'theme': 'light', 
      'type': 'image', 
      'size': 'invisible' 
     }, 
    } }) }} 

接触(エンティティ)

私は私のフィールドreCAPTCHAの

private $recaptcha; 
  • を持っているが、私は正しく表示ウィジェットreCAPTCHAのグーグルを持っていますが、私のこれでは動作しませんフォームを送信します。決してない。
  • 私は(エンティティクラスに検証することも可能である)あなたの形式で検証を定義する必要があり、GoogleのウェブサイトのreCAPTCHAの

答えて

0

に自分のドメインを登録しています。私の場合でも、私は喜びの中にフィールドを作りませんでした。私は、「マップされていない」フィールドと呼ばれるものを使用することをお勧めしました。 、あなたのcontactType

に私が使用したコードの下にお見せにあなただけの「マップされた」=>偽を使用する必要がある非マッピングされたフィールドを使用するには:

マイContactType:

  ->add('recaptcha', EWZRecaptchaType::class, array(
       'attr' => array(
        'options' => array(
         'theme' => 'light', 
         'type' => 'image', 
         'size' => 'normal', 
         'defer' => true, 
         'async' => true, 
        ) 
       ) 
       , 
       'mapped' => false, 
       'constraints' => array(
        new RecaptchaTrue() 
       ) 
      )) 

を私は与えますもしあなたが、私は多くのオプションがreCAPTCHAの作品にするために定義することを必要はありません見ることができますので、私のconfig.yml:

ewz_recaptcha: 
    public_key: xxxx 
    private_key: xxxx 
    # Not needed as "%kernel.default_locale%" is the default value for the locale key 
    locale_key: %kernel.default_locale% 
    locale_from_request: true 

編集:私のテンプレートに小枝でreCAPTCHAのウィジェットを表示するには、私はちょうど{{使用形_end(form)}}とrecaptchaウィジェットはsubmitボタンの上にあります。

編集2:あなたは、あなたのコントローラ内の任意の検証を行う必要がありますが、この1はありません。

if ($contactForm->isSubmitted() && $contactForm->isValid()) 
{ 
    //your logic 
} 
+0

私が既に持っている非常に類似したコード。送信ボタンの動作は以前と同じです。 recaptchaシステムでは動作しません。ウィジェットは表示されますが、フォームやその他のものに送信されるデータはありません。 – darkomen

+0

そうすれば、あなたの制御欄に if($ contactForm-> isSubmitted()&& $ contactForm-> isValid()) { die( 'hello'); } 文字列「hello」が表示されません。 「はい」の場合、再確認が確認されます。 – Mz1907

+0

recaptchaの確認のためのテストロボットの動作は、どのように正しく動作しますか? – darkomen

関連する問題