当我尝试做一些像
<?=$this->element->mailCiteCheck?>
没有显示。
但是,当我这样做时:
<?=var_dump($this->element->mailCiteCheck);?>
我:
object(Zend_Form_Element_Checkbox)#118 (33) {
["checked"]=>
bool(false)
["helper"]=>
string(12) "formCheckbox"
["options"]=>
array(2) {
["checkedValue"]=>
string(1) "1"
["uncheckedValue"]=>
等等……那么我如何显示这个表单的元素呢?
当我这样做
<?=$this->element->mailCiteCheck;die();?>
我得到这个警告:
ViewHelper装饰器不能在没有注册视图对象的情况下渲染
如@Hikaru提供的链接所述:
默认情况下,Zend_Form和Zend_Form_Element将尝试使用在
ViewRenderer
中初始化的视图对象
因此,而不是重写表单的render()
方法或手动调用$form->setView($view)
,另一种方法是将视图设置为ViewRenderer
,可能在引导期间:
Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->view = $view;
答案是将view设置为所有表单元素:
$view = new Zend_View();
$view->addScriptPath(APPLICATION_FORM_SCRIPT_PATH);
$view->addBasePath(APPLICATION_SCRIPT_PATH);
$replyForm = new Form_MailReply();
$replyForm->setView($view);
foreach ($replyForm as $item){
$item->setView($view);
}
$replyForm->render($view);
Zend_Form依赖于Zend_View。你还需要使用Zend_View类来让它工作。
你可以在这里读到一些关于这个话题的文章。
如何实现它的一个可能的例子:
$view = new Zend_View();
$form = new My_Form();
echo $form->render($view);