2013-01-22 8 views
3

지금까지는 모듈의 양식에 입력 필터를 바인딩했습니다. 즉, 모듈 측면의 요소에 입력 필터를 추가하여 양식의 요소를 생성했습니다.동적으로 생성 된 필드 요소에 inputFilter를 첨부하십시오.

예를 들어 내 양식이 같은 동적 요구 사항에 따라이 example

지금 메신저 만들기 텍스트 필드 요소를 확인

//Form 
public function addNamesTextFieldElement($names) 
    { 
     foreach($names as $name) 
     { 
      $nameTextField = new Element\Text($name->getName()); 
      $nameTextField->setAttribute('type', "text"); 
      $nameTextField->setLabel($name->getName()); 

      $this->add($nameTextField); 
     } 
    } 

입력 필터를 장착/추가 할 수있는 가장 좋은 방법은 될 것입니다 무엇 동적으로 생성 된 요소에 적용됩니다.

아마이 방법을 사용하지 것이다, 그러나이 같은 이미 폼에 InputFilter를 할당 제공, 일하는 것이

답변

0

:

public function addNamesTextFieldElement($names) 
{ 
    $factory  = new InputFactory(); 
    foreach($names as $name) 
    { 
     $nameTextField = new Element\Text($name->getName()); 
     $nameTextField->setAttribute('type', "text"); 
     $nameTextField->setLabel($name->getName()); 

     $this->add($nameTextField); 

     $this->getInputFilter()->add(
      $factory->createInput(array(
       'name'  => $name->getName(), 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min'  => 1, 
          'max'  => 100, 
         ), 
        ), 
       ), 
      )) 
     ); 
    } 
} 
관련 문제