0

Zendフレームワーク2にRecaptchaサービスを含める方法は?

私はこのようにしようとしました:

public function contactAction()
{
    $formContact = new ContactForm();
    $pubKey = 'mypubkey';
    $privKey = 'myprivkey';
    $recaptcha = new ZendService\ReCaptcha\ReCaptcha($pubKey, $privKey);
    return array ('formContact' => $formContact, 'recaptcha' => $recaptcha);

}

しかし、フレームワークをダウンロードしたときに ZendService\ReCaptcha がデフォルトで存在しないことがわかりました。それで、ここからダウンロードしました https://github.com/zendframework/ZendService_ReCaptcha

vendor\zendframework\zendframework\library\zendライブラリの他の部分と一緒に配置しました。

ページを更新しようとしましたが、zend サービスの recaptcha が見つからないため、再び機能しません。

Fatal error: Class 'Application\Controller\ZendService\ReCaptcha\ReCaptcha' not found in C:\Program Files (x86)\xampp\htdocs\Zf-tutorial\module\Application\src\Application\Controller\IndexController.php on line 79

誰かが私を助けることができますか?recaptcha を実装するのは簡単だと思っていましたが、そうではありません。ありがとう!

4

3 に答える 3

2

zendservice-recaptcha モジュールを composer.json ファイルに追加し、更新を実行します。

{
        ...
        "repositories": [
            {
                "type": "composer",
                "url": "http://packages.zendframework.com/"
            }
        ],
        ...
        "require": {
            ...
            "zendframework/zendservice-recaptcha": "*",
            ...
        }
        ...
    }

コンポーザーの更新:

php composer.phar update

これにより、モジュールがインストールされ、関連するクラス マッピングが構成され、使用する他のクラスと同様に use ステートメントを追加することでクラスにアクセスできるようになります。

于 2014-11-22T15:27:33.383 に答える
0

私も再キャプチャを試しましたが、成功しなかったので、キャプチャを更新するために何か別のものを実装し非常にうまく機能しました。これを一度試してください

resetCaptcha 関数:

    $form = $this->getServiceLocator()->get('zfcuser_register_form');
    $captcha = $form->get('captcha')->getCaptcha();
    $data = array();
    $data['id'] = $captcha->generate();
    $data['src'] = $captcha->getImgUrl() .
    $captcha->getId() .
    $captcha->getSuffix();
    return $data;

ajax リクエスト:

$(document).ready(function() {
        $('#refreshcaptcha').click(function() {
            var data = [];
            var form = <?php $this->registerForm; ?>
            data.push({name: "action", value: 'resetCaptcha'});
            data.push({name: "params[form]", value: form});
            $.post("<?php echo BASE_URL ?>/user/iajax", data,
               function(data) {
                        $('#form_reg img').attr('src', data.src);
                        $('#captcha-id-hidden').attr('value', data.id);
                    }, 'json');
        });
    });

HTML 呼び出し:

   <p class="refresh_captcha"><?php echo $this->formCaptcha($form->get('captcha')); ?>
                <input type="button" id="refreshcaptcha" value="refresh">
            </p>
于 2014-10-22T10:02:49.733 に答える