2015-02-01 3 views
0

captcha로 일부 요소를 생성하는 양식이 있습니다. 잘 작동합니다.재사용 편집을 위해 보안 문자가있는 Zend 2 양식

하지만 관리자 페이지에서도이 양식을 사용하고 captcha가 없어야합니다. 내가 양식을 제출하려고하면 나는

["captcha"] => array(1) { 
    ["isEmpty"] => string(36) "Value is required and can't be empty" 
} 

가 어떻게 보안 문자없이이 양식을 다시 사용할 수있는 오류가? 다른 새로운 양식을 확장하지 않고도 다른 방법이 있습니까?

답변

0

해결되었습니다.

그냥 필터를

use Zend\InputFilter\Input; 
use Zend\InputFilter\InputFilter; 

class FreeLessonFilter extends InputFilter 
{ 
public function __construct() 
{ 
    $this->addElements(); 
} 

protected function addElements() 
{ 

    $captcha = new Input('captcha'); 
    $captcha->setRequired(TRUE); 

    $this->add($captcha); 

} 
} 

을 만들어보다가 필요 기본적으로 인덱스 페이지

$this->defaultForm = new FreeLessonForm(); 
    $filter   = new FreeLessonFilter(); 
    $filter->get('captcha')->setRequired(false); 

    $this->defaultForm->setInputFilter($filter); 

에서 관리자 페이지 컨트롤러를 사용할 수 있지만, 그러나 관리에 - 없습니다.

+1

관리 페이지 컨트롤러에서 양식의 Captcha 요소를 제거 할 수도 있습니다. –

+0

@AdamLundrigan, admin 페이지 뷰에서이 요소가 없지만 $ form-> isValid()를 호출하면 트리거됩니다. 당신은 시도 할 수 있습니다. –

+0

클라이언트 측보기에 표시하지 않는 것은 양식에서 제거하는 것과 같지 않습니다. 양식의 유효성을 검사하기 전에'$ form-> remove ('element-name');'을 호출하여 양식에서 양식을 제거해야합니다. '$ form-> getInputFilter() -> remove ('element-name');를 호출하여 입력 필터를 제거해야 할 수도 있습니다. –