0

创建如下表单元素的第一种方法 -

*在控制器中

    $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'));

是否可以在第 2 种方法中创建与第一种方法相同的元素,例如添加 addFilter、addValidator 等。setLabel 不是必需的,因为我们在元素之前添加了标签?

4

3 回答 3

0

是的,有可能,您可以在视图中执行此代码:

$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email address')
      ->addFilter('StringToLower')
      ->setRequired(true)
      ->addValidator('NotEmpty', true)
      ->addValidator('EmailAddress'); 

但是你不应该因为它违反了 MVC 模式。或者也许你可以更好地解释你想做什么......也许我不明白......

于 2012-09-24T12:55:34.517 回答
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”来装饰元素,您可以在其中添加其余的标记来装饰元素。

于 2012-10-08T19:49:33.417 回答
0

我很确定你不能用你的第二种方法创建一个元素,但是还有另一种方法可以通过分解来创建它,在你的情况下你可以这样做:

$formText = createElement('email',$this->data['email'],array('size'=>'20', 'class'=>'input_min_max)->setRequired(true)->addValidator('whatever');

希望这能回答你的问题。

于 2012-09-24T12:58:13.660 回答