2013-01-22 54 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, 
         ), 
        ), 
       ), 
      )) 
     ); 
    } 
} 
相关问题