メインのナビゲーションを作成するためにヘルパーを作成しました。このヘルパーの一部は、ユーザーがビューに割り当てられているかどうかを確認することにより、ログインしているユーザーがいるかどうかを確認します
if($this->view->user)
{
//do stuff
}
ただし、レイアウトスクリプトでこのヘルパーを呼び出すと、$ this->view->userにアクセスできません。NULL値があります(ただし、var_dump($ this-> viewはビューオブジェクトを返しますが、割り当てられたすべてのプロパティは含まれていません)。ビュースクリプトでレイアウトに割り当てた場合にのみ、ユーザーデータにアクセスできます。 、すなわち
$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;
}
}