Php 如何将视图作为对象获取到动作助手中

Php 如何将视图作为对象获取到动作助手中,php,zend-framework,zend-view,Php,Zend Framework,Zend View,我有一个自定义的动作助手,工作正常。 若用户未登录,它将生成一个动态登录框,若用户已登录,它将生成一个菜单 但我有个问题。 我想从一个名为user_menu.phtml的小视图生成该菜单 如何将该视图放入视图辅助对象,并将其指定给对象 好的,一些更新,很抱歉这么愚蠢,实际上我有动作助手: 如果我在写第一个问题时说得够具体,我很抱歉 所以我在library/Hlp/Action/helper中有一个动作助手 若用户未登录inn,那个么该助手将呈现一个表单 这是我的助手方法,它完成了这项工作: pu

我有一个自定义的动作助手,工作正常。 若用户未登录,它将生成一个动态登录框,若用户已登录,它将生成一个菜单

但我有个问题。 我想从一个名为user_menu.phtml的小视图生成该菜单

如何将该视图放入视图辅助对象,并将其指定给对象

好的,一些更新,很抱歉这么愚蠢,实际上我有动作助手:

如果我在写第一个问题时说得够具体,我很抱歉

所以我在library/Hlp/Action/helper中有一个动作助手 若用户未登录inn,那个么该助手将呈现一个表单

这是我的助手方法,它完成了这项工作:

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
    } 
public function preDispatch()
{
$view=$this->getView();
$identity=Zend_Auth::getInstance()->getIdentity();
$session=new Zend_session_名称空间('users_session');
$user\u id=$session->idd;
如果(!空($identity)){
$userModel=新应用程序_Model_Vartotojai();
$user\u email=$userModel->geUserRowBy('id',$user\u id);
$user_email=$user_email['email'];
$view->login\u meniu=$identity'-
[id:'.$user\u id.]
['.$user\u email.]
'; //在这里,我想将视图文件读取到一个对象或其他变量 //如果一个对象是si,我就可以注入一些值 }否则{ $form=新应用程序\表单\登录表单(); $view->login\u meniu=$form; $view->register_link='
'; //在这里,我想将视图文件读取到一个对象或其他变量 //如果一个对象是si,我就可以注入一些值 }

除此之外,我还想添加一些链接或其他HTML内容,这些内容将br存储在视图文件中。

从视图中,您可以将此内容传递给帮助器

myHelper($this,$otherVars )
然后,您可以从助手调用另一个助手

myHelper($view, $otherVars){
  $view->otherHelper()
}

您所要做的就是扩展该类。然后将视图对象存储在公共属性
$view

通过使用该对象,您可以使用

return $this->view->partial('user_menu.phtml');
更新

既然你已经更新了你的问题,我将更新我的答案,保留以前的答案,因为它对你以前的问题仍然有效

在您的情况下,您已经有了
$view
对象,要执行您在注释中要求的操作,只需以以下方式使用附加到视图的:

$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>
//user\u menu.phtml的内容
登录信息

[id::
[]
'


另外,我在视图脚本中使用了for echo,如果你不使用它们,你应该用

代替。谢谢你,法比奥,我认为你的答案接近事实,但我仍然无法让它工作。因此我必须初始化$view\u obj=new Zend\u view\u Helper\u Abstract();然后我如何指定我要使用的视图文件?@madcatzx您应该在问题中发布您当前的代码,以澄清您需要什么。您已经有一个视图帮助程序,不是吗?因此在您的课堂中扩展
Zend\u view\u helper\u Abstract
,您就可以了。