2013-01-22 99 views
3

到目前爲止,我已經將輸入過濾器綁定到模塊中的表單,換句話說,我一直在創建表單中的元素,將輸入過濾器添加到模塊側的元素。將inputFilter附加到動態創建的字段元素

例如檢查這個example

眼下IM創建文本字段內容動態地根據要求,這樣在我的形式

//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); 
     } 
    } 

什麼會是在哪裏添加/附加輸入濾波器最好的方法到這樣的動態生成的元素。

回答

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, 
         ), 
        ), 
       ), 
      )) 
     ); 
    } 
} 
相關問題