2012-03-21 128 views
-1

我用來做我自己的佈局管理索引頁面佈局Zend框架

<div id="content"> 
      <ul> 
       <li><a href="<?php echo $this->url(array('module' => 'visits', 'controller' => 'visit', 'action' => 'index', 'page' => 'view'), NULL, TRUE); ?>" class="showVisists">Display all visits</a></li> 
       <li><a href="<?php echo $this->url(array('module' => 'visits', 'controller' => 'visit', 'action' => 'index', 'page' => 'add'), NULL, TRUE); ?>" class="addVisit">Add new visit</a></li> 
      </ul> 

      <span class="result"><?php echo $this->message ?></span> 
      <div id="innerpage"> 
      <?php include_once($this->pageToInclude . ".phtml") ?> 
      </div> 
     </div> 

內的頁面加載當我選擇從導航錨,參數通過控制器index操作接收,將選擇我必須包含的頁面並將其返回到索引頁,以便可以查看頁面。

public function indexAction() { 
    $status = $this->getRequest()->getParam('page'); 
    switch ($status) { 
     case 'view': 
      $pageToInclude = 'get-visits'; 
      break; 
     case 'add': 
      $pageToInclude = 'add'; 
      break; 
    default: 
      $pageToInclude = 'get-visits'; 

    } 

    $this->view->pageToInclude = $pageToInclude; 
} 

現在我想使用Zend框架支持的佈局。

我啓用了佈局,並將索引中的所有東西複製到layout.phtml。

當我在佈局中包含頁面時發生錯誤。我知道我不應該在Zend框架中使用includes或者甚至require,但是當我點擊佈局頁面中的錨點「顯示所有訪問」時,我不知道如何顯示「獲取所有訪問」的視圖。

我想讓這樣的事情:

<div id="innerpage"> 
       <?php echo $this->layout()->content; ?> 

      </div> 

,但我應該如何動態指定的內容?

注:我是Zend框架的新手,並且還不熟悉如何有效地使用它。

+0

請運行[Zend Framework快速入門](http://framework.zend.com/manual/en/learning.quickstart.html)和[Rob Allen的ZF 1.11教程](http://akrabat.com/ Zend的框架教程/)。讓佈局舒服一點。然後看看Zend_View助手,視圖助手可能是您解決這個問題的最佳解決方案。 – RockyFord 2012-03-22 12:30:45

回答

1

哼你的問題不是100%清除。它基於AJAX嗎?

非基於AJAX的:

剛剛從導航到你的控制器動作聯繫起來,比相應的「一個.phtml」的觀點是在‘內容區’redered:

// reders: view/scripts/index/addvisit.phtml 
public function addvisitAction 
{ 

} 

打造最好的方法你導航中的鏈接IST的「URL」助手:

<?php 

$linkToAllVisits = $this->url(array(
    'controller' => 'index', 
    'action'  => 'addvisits', 
    'module'  => 'default' 
)); 

?> 

<div id="navi"> 
    <li><a href="<?php echo $linkToAllVisits; ?>">AllVisits</a></li> 
</div> 

如果要加載與ajaxRequest(我想你想這樣做)的內容只需打開同一控制研究呃動作就像上面的例子中,但禁用此操作的佈局:順便說

// reders: view/scripts/index/addvisit.phtml 
public function addvisitAction 
{ 
    // disable layout and return only .phtml 
    $this->_helper->layout->disableLayout(); 

} 

,如果你想使用Actionnames以「 - 」你的名字首字母大寫的這樣的操作:

// add-visits with add-visits.phtml 
puhlic function addVisitsAction() 
{} 
+0

我知道這並不明確,因爲我沒有足夠的信息來討論這個問題,我試圖按照快速入門示例進行操作。 – palAlaa 2012-03-21 07:51:00

0

我想這是你的問題的關鍵部分:

<?php include_once($this->pageToInclude . ".phtml") ?> 

然後你可以使用視圖的render()方法實現相同的:

<?php echo $this->render($this->pageToInclude . ".phtml") ?> 

您必須確保.phtml頁面在render()的允許路徑中。如果它只是同一個控制器中常規操作的視圖腳本,則它應該已經在路徑中。