2014-10-21 4 views
0

젠드 프레임 워크 2에 Recaptcha 서비스를 포함시키는 방법은 무엇입니까? 젠드 서비스 ReCaptcha 포함 및 사용 ZF2 (v2.3.3)

나는 이런 식으로하려고 노력 :

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 service 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를 구현하는 것이 간단하다고 생각하지만, 그렇지 않다! 감사!

답변

2

작곡가에게 zendservice-recaptcha 모듈을 추가하십시오.

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

업데이트 작곡가 : JSON 파일과 업데이트를 실행하는이 모듈을 설치하고 관련 클래스 매핑을 구성합니다

php composer.phar update 

그리고 당신은 사용 문을 추가하여 클래스에 액세스 할 수 있습니다 당신이 사용하는 다른 수업과 함께.

0

이 시도조차 내가 reCAPTCHA를을 시도했지만 성공하지 그래서 보안 문자를 새로 다른 무언가를 구현하고 매우 잘 작동 한 번

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; 

아약스 요청 :

$(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> 
-1

당신은 제대로 라이브러리 ZendService\ReCaptcha를 설치하지 마십시오.

시스템 쓰기 :

Class 'Application\Controller\ZendService\ReCaptcha\ReCaptcha' not found

을 수행해야합니다

  • 파일 vendor/ZF2/library/Zend/Loader/StandardAutoloader.php 삽입 문자열에서 vendor\zendframework\zendframework\library
  • 로 배치

    파일 init_autoloader.php 삽입 문자열

    $loader->add('ZendService', $zf2Path);에서

  • case self::AUTOREGISTER_ZF:에서 $this->registerNamespace('ZendService', dirname(dirname((__DIR__))) . '/ZendService');

    .

+0

당신은 분명히 작곡가가 무엇인지 알지 못했습니다. –