0

EWZRecaptcha Bunlde (dev-master) と symfony 2.1.0 に問題があります。reCaptchaは正しく表示され画像も変わるので設定はOKだと思います。しかし、reCaptcha は検証されておらず、送信後、$form->getErrorsAsString()「このフォームには余分なフィールドを含めないでください」と表示されます。

ええと、余分なフィールドはreCaptcha から送信されたものだと思いますが、ドキュメントで何かを見逃したとは思わないのでrecaptcha_challenge_field、何が問題なのですか?recaptcha_response_field

検証のために、ドキュメントのコードを使用します:(そこに記載されている代替手段も試しました)

use EWZ\Bundle\RecaptchaBundle\Validator\Constraints as Recaptcha;
//...
/**
* @Recaptcha\True
*/
public $recaptcha;
//...

設定で:

framework:
    validation: { enable_annotations: true }

私は次のようにフィールドを追加しました:

$builder->add('recaptcha', 'ewz_recaptcha', array(
                'property_path' => false,
                'attr' => array(
                    'options' => array(
                        'theme' => 'clean'
                    )
                )
));

ドキュメントに記載されていない重要なことを忘れてしまったのでしょうか?

4

2 に答える 2

0

ついに解決策を見つけました!
取り除くためextra fieldsに、フォームクラスにこれらの2つのフィールドを追加しました。

$builder->add('recaptcha_challenge_field', 'hidden', array('property_path' => false));
$builder->add('recaptcha_response_field', 'hidden', array('property_path' => false));

次に、検証は次のように機能します。

use EWZ\Bundle\RecaptchaBundle\Validator\Constraints\True;
...
'constraints'   => array(
                    new True()
                )

注釈機能しません:

use EWZ\Bundle\RecaptchaBundle\Validator\Constraints AS Recaptcha;
...
/**
 * @Recaptcha\True
 */
public $recaptcha;
于 2013-01-11T15:53:50.507 に答える
0

おそらく、ビルダーに「制約」オプションを追加してみてください。私の recaptcha ビルダーの追加は次のようになります。

    $builder->add('recaptcha', 'ewz_recaptcha', array(
                        'attr'          => array(
                            'options' => array(
                                'theme' => 'red'
                            )
                        ),
                        'label' => "Verification",
                        'property_path' => false,
                        'constraints'   => array(
                            new True()
                        ),
                        'help' => "Enter the words in the box for verification purposes."
                    ));

したがって、制約に「use」ステートメントを追加します。

use EWZ\Bundle\RecaptchaBundle\Validator\Constraints\True;

次に、制約オプションを追加します。

'constraints'   => array(
    new True()
),
于 2013-01-10T19:26:33.650 に答える