到目前为止,我一直将输入过滤器绑定到模块中的表单,换句话说,我一直在创建表单中的元素,将输入过滤器添加到模块侧的元素。
例如,请检查此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 );
}
}
在这种动态生成的元素中添加/附加输入过滤器的最佳方法是什么。
答案 0 :(得分:0)
我可能不会使用这种方法,但是这样的方法可行,只要你已经为表单分配了一个InputFilter:
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,
),
),
),
))
);
}
}