2014-06-12 2 views
2

ZF2 유효성 검사에 실패하면 입력 텍스트 상자 주위에 빨간색 테두리를 추가하고 싶습니다. ZF2가 유효성 검사 실패의 경우에 CSS 클래스를 추가/설정하는 방법을 제공한다면 저는 생각하고 있습니다. Zend Validation/Form API 만 사용할 수 있다면 더 좋습니다. 클라이언트 측 (javascript/jQuery) 솔루션을 고려하고 있지 않습니다.Zf2에서 유효성 검사에 오류 css 클래스를 추가하는 방법이 실패했습니다.

UPDATE :

나는 CSS 클래스 (기본적으로 "입력 오류")와 유효하지 않은 요소를 렌더링 당신은 FormRow view helper 사용할 수

<div class="row"> 
    <div><?php echo $this->formLabel($form->get('first_name')); ?></div> 
    <div><?php echo $this->formElement($form->get('first_name')); ?></div> 
    <div><?php echo $this->formElementErrors($form->get('first_name'), array('class' => "field-validation-error")); ?></div> 
</div> 
+0

어떻게 PHP (ZF2) 양식을 사용합니까? AFAIK, 자바 스크립트와 같은 클라이언트 측 언어로 가야합니다. 백엔드 (ZF2)에서 패키지를 만들고 필요한 스타일을 적용하기 위해 자바 스크립트로 보내십시오. 참고 : 유효성 검사는 위에서 설명한 클라이언트 측 언어로 작동하지 않습니다. –

+0

@ Mr_Green 그는 ZF2보기 도우미가 HTML을 렌더링하는 방법을 사용자 정의하는 것에 대해 이야기합니다. 그는 스타일링 자체에 대해 이야기하지 않습니다. – NDM

답변

4

, 같은 양식 행 요소를 사용하고 있습니다.

사용하여 템플릿에 매우 간단하다 :

echo $this->formRow($element); 

또는 사용자 정의 클래스를 원하는 경우 : 당신이 필요합니다 입력에 수업을 특정 '오류'를 추가 할 경우

echo $this->formRow()->setInputErrorClass('my-error-class')->render($element); 
+0

+1 쉽게 내 방법 :-) – AlexP

+0

좋을 수도 있지만 formRow를 사용하지 않고 별도의 formElement를 사용하고 있습니다. 내 업데이트 된 질문보기 –

+1

@ kuldeep.kamboj : FormRow 뷰 도우미를 partial과 함께 사용하는 것이 좋습니다.이 템플릿은 모든 관련 데이터가 양식 요소에 포함 된 사용자 지정 템플릿이므로 사용자가 직접 렌더링하고 가능한 경우 언제든지 다시 사용할 수 있습니다. – lku

0

관련 Zend\Form\View\Helper\Form* 클래스를 수정하여 Zend\Form\ElementInterface 오브젝트를 인트로 스코프하고 필요한 HTML을 렌더링하십시오. 예를 들어

:

// \MyModule\Form\View\Helper\MyCustomFormElement.php 
class MyCustomFormElement extends \Zend\Form\View\Helper\FormElement 
{ 

    public function render(Element $element) 
    { 
     $errors = $element->getMessages(); 

     if (! empty($errors)) { 

      $classes = $element->getAttribute('class'); 

      if (null === $classes) $classes = array(); 
      if (! is_array($classes)) $classes = explode(' ', $classes); 

      $classes = array_unique(array_merge($classes, array('my-error-class'))); 

      $element->setAttribute('class', implode(' ', $classes)); 
     } 

     return parent::render($element); 
    } 

} 

가 그럼 그냥 같은 이름의 호출 가능한를 등록하여 기본 양식 요소 도우미를 교체합니다.

// Module.php 
public function getViewHelperConfig() 
{ 
    return array(
     'invokables' => array(
      'form_element' => 'MyModule\Form\View\Helper\MyCustomFormElement', 
     ), 
    ); 
} 
관련 문제