我有一个自定义的Action Helper工作正常。 如果用户没有登录,它会生成一个动态登录框,如果是,则生成一个菜单。
但我在这里遇到了问题。 我想从一个名为user_menu.phtml
的小视图生成该菜单如何将该视图添加到我的视图助手中,并将其分配给对象?
好的,有些更新,抱歉愚蠢,实际上我有行动助手:
对不起如果我在撰写初始问题时非常具体。
所以我有一个Action助手:library / Hlp / Action / Helper 如果用户不是商店,那帮助者会呈现一个表格。
这是我的Helper方法,可以完成这项工作:
public function preDispatch()
{
$view = $this->getView();
$identity = Zend_Auth::getInstance()->getIdentity();
$session = new Zend_Session_Namespace('users_session');
$user_id = $session->idd;
if( !empty($identity) ) {
$userModel = new Application_Model_Vartotojai();
$user_email = $userModel->geUserRowBy('id', $user_id);
$user_email = $user_email['email'];
$view->login_meniu = $identity.' -
[id:'.$user_id.']<br />['.$user_email.'] <br/>
<a href="/authentication/logout">Log OUt</a>';
//here I would like to read view file to an object or some other variable
//if posible to an object si I would be able to inject some values
} else {
$form = new Application_Form_LoginForm();
$view->login_meniu = $form;
$view->register_link = '<br /><a href="/users/register">Register</a>';
//here I would like to read view file to an object or some other variable
//if posible to an object si I would be able to inject some values
}
除了该表单,我想添加一些链接或其他HTML内容,这些链接或其他HTML内容将存储在视图文件中。
答案 0 :(得分:3)
您所要做的就是扩展Zend_View_Helper_Abstract课程。然后,您将视图对象存储在公共属性$view
中。
通过使用该对象,您可以使用
呈现文件return $this->view->partial('user_menu.phtml');
<强>更新强>
由于您已更新了问题,我将更新我的答案,留下之前的答案,因为它仍然适用于您之前的问题。
在您的情况下,您已拥有$view
对象,要在评论中执行您要求的操作,只需使用此方式附加到视图的partial helper:
$renderedScript = $view->partial('user_menu.phtml',
array('id' => $user_id, 'email' => $user_email['email']));
通过将数组或对象作为第二个参数提供给部分调用,您可以将它们用作脚本文件中的模型。例如:
// content of user_menu.phtml
<h1>Login info</h1>
<p>
[id: <?=$this->user_id?>]<br />
[<?=$this->email?>] <br/>
<a href="/authentication/logout">Log Out</a>'
</p>
P.S。我在视图脚本中使用了short_tags + the equal sign (=) shorthand来表示echo,如果你不使用它们,你应该用<?php echo $this->email ?>
替换
答案 1 :(得分:-2)
从视图中,您可以将其传递给帮助者
myHelper($this,$otherVars )
然后从助手那里你可以调用另一个助手
myHelper($view, $otherVars){
$view->otherHelper()
}