ZF3的ReCaptcha值错误

时间:2018-10-03 15:51:48

标签: zend-framework recaptcha zend-framework3

我使用了最新的Zend Framework,现在我想在表单上使用ReCaptcha。 ReCaptcha元素与其他一些元素一起定义为:

$pubKey = 'replaced by the actual pubkey';
$privKey = 'replaced by the actual privkey';
$recaptcha = new \Zend\Captcha\ReCaptcha(['pubKey' => $pubKey, 'privKey' => $privKey]);

$this->add(array(
    'attributes' => array (
        'data-role' => 'none',
    ),
    'name' => 'captcha',
    'type' => 'captcha',
    'options' => array(
        'captcha' => $recaptcha,
    ),
));

此代码验证控制器中的表单:

public function contactAction () {
    $contactForm = new ContactForm();
    if($this->getRequest()->isPost()) {
        $contactForm->setData($this->getRequest()->getPost());

        if($contactForm->isValid()){
            // send actual mail
            return $this->redirect()->toRoute('page', ['lang' => $this->translator->getLocale(), 'page' => 'contact']);
        }
    }
    $viewModel = new ViewModel ([
        'contactForm' => $contactForm
    ]);
    $viewModel->setTemplate('application/index/contact');
    return $viewModel;
}

最后,这是视图:

<?= $this->form($contactForm); ?>

对我来说,这段代码非常简单,应该可以使用。但是,在发送联系表时,它会显示错误“验证码值错误”。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您必须根据Google的规则命名元素。有了这段代码,它就像轻轻松松

$pubKey = 'replaced by the actual pubkey';
$privKey = 'replaced by the actual privkey';
$recaptcha = new \Zend\Captcha\ReCaptcha(['pubKey' => $pubKey, 'privKey' => $privKey]);

$this->add(array(
    'name' => 'g-recaptcha-response',
    'type' => 'captcha',
    'options' => [
        'captcha' => $recaptcha,
    ]
));

无论如何,“ ZF文档”一如既往的简短,缺乏示例。