创建下面的表单元素的第一种方法 -
*在控制器
中 $email = new Zend_Form_Element_Text('email');
$email->setLabel('Email address')
->addFilter('StringToLower')
->setRequired(true)
->addValidator('NotEmpty', true)
->addValidator('EmailAddress');
创建下面的表单元素的第二种方法 -
*在视图中
echo $this->formText('email',$this->data['email'],array('size'=>'20', 'class'=>'input_min_max'));
是否可以在第二种方法中创建与第一种方法相同的元素,如添加addFilter,addValidator等。 setLabel不是必需的becoz我们在元素之前添加了标签吗?
答案 0 :(得分:0)
是的,您可以在视图中执行此代码:
$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email address')
->addFilter('StringToLower')
->setRequired(true)
->addValidator('NotEmpty', true)
->addValidator('EmailAddress');
但是不应该,因为它违反了MVC模式。 或许你可以更好地解释你想做什么......也许我不理解......
答案 1 :(得分:0)
我很确定你不能用你的第二种方法创建一个元素,但还有另一种方法可以通过因子分解来创建它,在你的情况下你可以这样做:
$formText = createElement('email',$this->data['email'],array('size'=>'20', 'class'=>'input_min_max)->setRequired(true)->addValidator('whatever');
希望这会回答你的问题。
答案 2 :(得分:0)
不确定为什么要在视图中插入表单元素。如果这是用于样式化,则可以使用视图脚本作为装饰器。
表格:
$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email address')
->addFilter('StringToLower')
->setRequired(true)
->addValidator('NotEmpty', true)
-> setDecorators(array(array('ViewScript', array('viewScript' => 'index/myform.phtml'))))
->addValidator('EmailAddress');
这将调用视图脚本“myform.phtml”来装饰元素,在其中可以添加标记的其余部分来装饰元素。