我写了一个助手来制作我的主要导航。此帮助程序的一部分通过检查用户是否已分配给视图来检查是否有用户登录
if($this->view->user)
{
//do stuff
}
但是,当我在布局脚本中调用此助手时,它无法访问 $this->view->user; 它有 NULL 值(虽然 var_dump($this->view 返回视图对象,但不包括我分配给它的所有属性)。它只能访问用户数据,如果在视图脚本中,我将它分配给布局, IE
$this->layout()->user = $this->user;
然后在助手中做
if($this->view->layout()->user)
{
//do stuff
}
这很痛苦,因为这意味着在每个视图脚本中我必须添加一行来将数据传递给布局。
有没有办法让布局脚本中调用的助手访问视图的属性?
编辑*
这是来源:
<?php
class Zend_View_Helper_MainNav extends Zend_View_Helper_Abstract {
public function mainNav()
{
if ($this->view->layout()->navType == 'none'){
$html = '<div id="nav"><a href="/" id="logo">Sum puzzles</a></div>';
} else if($this->view->layout()->navType == 'small'){
$html = '<div id="nav" class="small"><a href="/" id="logo">Sum puzzles</a><ul>' .
'<li><a href="/puzzle/view" class="button">play a puzzle</a></li>' .
'<li><a href="/sequence/play" class="button">puzzle sequences</a></li>' .
'<li><a href="/puzzle/create" class="button">create a puzzle</a></li>';
if(!$this->view->user)
{
$html .= '<li><a href="/teachers" class="button">teachers area</a></li>';
}
$html .='</ul></div>';
} else if($this->view->layout()->navType == 'large'){
$html = '<div id="nav" class="large"><a href="/" id="logo">Sum puzzles</a><ul>' .
'<li><a href="/sequence/play" class="playSequence">Play a sequence of puzzles</a></li>' .
'<li><a href="/puzzle/create" class="createPuzzle">Create your own puzzles</a></li>';
if(!$this->view->user)
{
$html .= '<li><a href="/teachers" class="teachersArea">teachers area</a></li>';
}
$html .= '</ul></div>';
}
return $html;
}
}