2013-04-11 136 views
0

如何在不同的控制器/模塊中對佈局進行多個操作?Zend Framework:佈局中的多個模塊

我嘗試這樣做:

<div id="login"><?php $x=new User_LoginController; $x->LoginAction() ?> 

<div id="news"><?php $x=new Site_NewsController; $x->ShowAction() ?> 
+0

這不是一個好主意。推測你的登錄行爲顯示登錄表單?所以你應該在佈局中輸出這個表單(可能通過。helper)。 – 2013-04-11 18:13:42

+0

在每一個視圖中,我有一個Ajax代碼,接下來是形式。 我需要網站:新聞,登錄/聊天,最新評論,留言。我沒有其他的想法.. – Jeremy 2013-04-11 19:02:51

回答

0

你想實現view helpers,特別是placeholder()查看幫手。

例如呈現在任何一個登錄表單或應用程序中的所有頁面,我們先從一個placholder在我們的佈局或視圖腳本的形式:

<!--layout.phtml--> 
<div> 
    <?php echo $this->layout()->login . "\n"?> 
</div> 

我使用action helper現在從任何控制器或前端控制器插件佔位符可以設置

<?php 

/** 
* Prepares login form for display 
*/ 
class My_Controller_Action_Helper_Login extends Zend_Controller_Action_Helper_Abstract 
{ 

    /** 
    * @return \Application_Form_Login 
    */ 
    public function direct() 
    { 
     $form = new Application_Form_Login(); 
     //this is the url of the action this form will default too 
     $form->setAction('/index/login'); 

     return $form; 
    } 
} 

:準備形成用於顯示

public function preDispatch() 
    { 
     $this->_helper->layout()->login = $this->_helper->login(); 
    } 

現在登錄表單將在顯示來自該控制器使用layout.phtml因爲它的佈局任何行動。我會讓你自己發現插件。

對佔位符使用助手通常是實現你想要的東西的首選方式。但是,如果您絕對必須在其他視圖中顯示某項操作,則可以使用Action view helper,但請注意性能可能會受到影響。

<div id="login"> 
    <?php echo $this->action('login', 'login', 'user'); ?> 
</div> 
0

我沒有得到你想要什麼?

我猜到了什麼是可能是你想調用從佈局此功能(作用)顯示什麼是

返回從那裏進入佈局......

+0

我需要渲染動作 - 控制器 - 模塊的佈局。 當我嘗試該代碼時,我有:致命錯誤:未找到類'User_LoginController'。我不知道,我如何從不同模塊中的不同控制器獲取視圖/動作。 對不起,我的英語。 – Jeremy 2013-04-11 17:36:00

+0

這可以幫助...... 爲了使大家經常使用的這種定位的標籤......

2013-04-11 17:51:35

+0

我需要在一個網站上4個模塊。新聞,登錄/聊天等,沒有鏈接。 – Jeremy 2013-04-11 18:54:42