如果通过AJAX调用模板,则不使用EWZRecaptchaBundle呈现reCaptcha代码

时间:2014-08-26 15:12:14

标签: php ajax symfony recaptcha

我遇到了这个奇怪的问题,我找不到办法让它失败,所以我需要你的帮助。我已经下载,安装和配置了EWZRecaptchaBundle,显然,所有这些都很好。这就是我的config.yml部分是如何:

#EWZRecaptchaBundle
ewz_recaptcha:
    public_key:   "%recaptcha_public_key%"
    private_key:  "%recaptcha_public_key%"
    locale_key:   %kernel.default_locale%
    enabled: true

密钥设置正确,因为我可以在浏览器上看到此URL,这就是我将字段添加到表单的方式:

$builder
    ->add('captcha', 'ewz_recaptcha', array(
        'mapped' => FALSE,
        'attr' => array(
            'options' => array(
                'theme' => 'clean'
            )
        ),
        'constraints' => array(
            new True()
        )
    ))
 ....

我还为验证添加了use语句:

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

这是渲染字段后在Twig模板上的结果:

<script type="text/javascript">
    var RecaptchaOptions = {"theme":"clean"}
</script>
<script src="//www.google.com/recaptcha/api/challenge?k=6Le0gvgSAAAAAA9TcipaADEplRG2mU_dk4S8uiaz" type="text/javascript"></script>
<noscript>
    "<iframe src="//www.google.com/recaptcha/api/noscript?k=6Le0gvgSAAAAAA9TcipaADEplRG2mU_dk4S8uiaz" height="300" width="500"></iframe>
    <br/>
    <textarea name="recaptcha_challenge_field" rows="3" cols="40"&gt;&lt;/textarea&gt;&lt;input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
    "
</noscript>

为什么"代码中的<noscript>为何?为什么<noscript>代码?为什么图像没有渲染?对此有何建议或帮助?我变得疯狂,无法找到任何解决方案

1 个答案:

答案 0 :(得分:2)

通过AJAX请求显示reCAPTCHA需要特殊处理。

https://developers.google.com/recaptcha/docs/display#AJAX