我有點困惑,閱讀所有關於從Zend開始的帖子和教程,因爲有很多不同的方式來解決問題。使用Zend Framework構建模塊化網站:我是否正確?
我只是需要一些關於我的代碼的反饋,以瞭解我是否在正確的軌道上。
爲了簡單地得到一個(硬編碼)導航我的網站(取決於誰是登錄)我建立一個控制器插件有postDispatch
方法:
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$menu = new Menu();
//Render menu in menu.phtml
$view = new Zend_View();
//NEW view -> add View Helper
$prefix = 'My_View_Helper';
$dir = dirname(__FILE__).'/../../View/Helper/';
$view->addHelperPath($dir,$prefix);
$view->setScriptPath('../application/default/views/scripts/menu');
$view->menu = $menu->getMenu();
$this->getResponse()->insert('menu', $view->render('menu.phtml'));
}
是不是正確的,我需要設置助手路徑呢? 我在一個名爲ViewSetup
的插件控制器中做了這個。在那裏,我爲doctype,headlinks和helper路徑等視圖做了一些設置(這一步來自Zend Framework in Action一書)。
的Menu
類開始看起來是這樣的:
class Menu
{
protected $_menu = array();
/**
* Menu for notloggedin and logged in
*/
public function getMenu()
{
$auth = Zend_Auth::getInstance();
$view = new Zend_View();
//check if user is logged in
if(!$auth->hasIdentity()) {
$this->_menu = array(
'page1' => array(
'label' => 'page1',
'title' => 'page1',
'url' => $view->url(array('module' => 'pages','controller' => 'my', 'action' => 'page1'))
),
'page2' => array(
'label' => 'page2',
'title' => 'page2',
'url' => $view->url(array('module' => 'pages','controller' => 'my', 'action' => 'page2'))
),
'page3' => array(
'label' => 'page3',
'title' => 'page3',
'url' => $view->url(array('module' => 'pages','controller' => 'my', 'action' => 'page3'))
),
'page4' => array(
'label' => 'page4',
'title' => 'page4',
'url' => $view->url(array('module' => 'pages','controller' => 'my', 'action' => 'page4'))
),
'page5' => array(
'label' => 'page5',
'title' => 'page5',
'url' => $view->url(array('module' => 'pages','controller' => 'my', 'action' => 'page5'))
)
);
} else {
//user is vom type 'client'
//..
}
return $this->_menu;
}
}
Here's我的看法腳本:
<ul id="mainmenu">
<?php echo $this->partialLoop('menuItem.phtml',$this->menu) ?>
</ul>
這是工作至今。我的問題是:通常是這樣做的;有什麼需要改進的嗎? 我是Zend的新手,我在網上看到了經常不太明顯的棄用教程。即使這本書已經在提及自動加載器的地方被棄用了。
炒作與第二個解決方案! 非常感謝!我喜歡這裏的網站。比論壇更快速的迴應。 如果你能告訴我這兩種情況之間的區別,那會很好。 是否有推薦的解決方案? – Oliver
我不會說有推薦的解決方案。這取決於您的應用程序設置。 –