ZF2를 사용하면 사용자 지정 양식 요소에 대한 사용자 지정보기 도우미를 등록하는 것이 매우 간단했습니다.사용자 지정 양식보기 도우미 등록
당신은 단순히 같은 요소를 만들 수:
use Zend\Form\ElementInterface;
use Zend\Form\View\Helper\FormElement;
class Recaptcha extends FormElement
{
public function render(ElementInterface $element)
{
return '<div class="form-group">
<div id="register_recaptcha">
<div class="g-recaptcha" data-sitekey="' . $element->getSecret() . '"></div>
</div>
</div>
<script src="//www.google.com/recaptcha/api.js"></script>';
}
}
그리고 설정에서 그것을 와이어 :
use Zend\Form\Element;
class Recaptcha extends Element
{
protected $attributes = [
'type' => 'recaptcha',
];
protected $secret;
public function getSecret()
{
return $this->secret;
}
public function __construct($secret)
{
parent::__construct();
$this->secret = $secret;
}
}
가 일치하는 도우미 만들기
return [
'form_elements' => [
'factories' => [
Recaptcha::class => RecaptchaFactory::class,
],
],
'view_helpers' => [
'invokables' => [
'recaptcha' => RecaptchaHelper::class,
],
],
];
IIRC을, 당신 부트 스트랩에서도 연결해야합니다.
public function onBootstrap($e)
{
$application = $e->getApplication();
$services = $application->getServiceManager();
$services->get('ViewHelperManager')->get('FormElement')->addType('recaptcha', 'recaptcha');
}
ZF2에서 ZF3으로 프로젝트를 업그레이드하면 사용자 정의 요소가 이제 텍스트 필드로 나타납니다. 내가 현장에서 직접 도우미를 호출 할 경우
는 제대로 렌더링 :
이{{ recaptcha(user_form.get('recaptchafield')) | raw }}
그것은 겉보기에 사라진 것 자동 연결합니다. 각각에 대해 formRow를 호출하면 도우미가 호출되지 않습니다.
누구나 빠른 수정이 가능합니까? 실제 zend-form 및 zend-view 코드를 검토하지 않아도됩니다.
감사합니다.
나는 그것을 시도했다! 불행히도 성공하지 못했습니다. 실제로 내가 여기에 게시하도록 유도 한 것은 사실입니다. 내가 formRow에 뛰어 들어가서 무슨 일이 일어나는지 알아봐야 할 것 같아. – Saeven