Php 可以在视图中创建与控制器中相同的表单元素

Php 可以在视图中创建与控制器中相同的表单元素,php,zend-framework,zend-form,zend-form-element,Php,Zend Framework,Zend Form,Zend Form Element,创建表单元素的第一种方法,如下所示- *内部控制器 $email = new Zend_Form_Element_Text('email'); $email->setLabel('Email address') ->addFilter('StringToLower') ->setRequired(true) ->addValidator('NotEmpty', true)

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

*内部控制器

    $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不是必需的,因为我们在元素之前添加了标签?

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

$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email address')
      ->addFilter('StringToLower')
      ->setRequired(true)
      ->addValidator('NotEmpty', true)
      ->addValidator('EmailAddress'); 
但是你不应该,因为这违反了MVC模式。
或者你可以更好地解释你想做什么。。。也许我不明白…

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

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

希望这能回答您的问题。

不确定为什么要在视图中插入表单元素。如果这是为了设计样式,可以使用视图脚本作为装饰器

表格:

 $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”来装饰元素,您可以在其中添加其余的标记来装饰元素。

这行代码
echo$formText=$This->createElement('text','bajrang')中是否有错误。lal@gmail.com,数组('size'=>'20','class'=>'input\u min\u max'))->setRequired(true)->addValidator(“电子邮件地址”)什么是“bajrang”。lal@gmail.com' ? 如果我理解,您希望这是电子邮件对象的标签或值否?如果是,则应将其放入数组中,如“value”=>“bajrang”。lal@gmail.com'或'label'=>'巴伊朗。lal@gmail.com“我已经表明我的观点了吗?哦,对不起,这是控制的名字,用‘email’替换为‘bajrang’。lal@gmail.com'