2012-08-06 93 views
0

我試圖創建一個自定義模塊(學習目的)來顯示特定用戶的付款詳細信息。致命錯誤:調用成員函數append()

我被困在塊和佈局,並得到了如下的錯誤之間:

Fatal error: Call to a member function append()

<?php 
class PITS_Pitsnews_PaymentController extends Mage_Core_Controller_Front_Action { 

    protected function _getSession() { 
     return Mage::getSingleton('customer/session'); 
    } 

    public function indexAction() { 
     $this->loadLayout(); 
     $this->_initLayoutMessages('customer/session'); 
     $session = $this->_getSession(); 
     if (!$this->_getSession()->isLoggedIn()) { 
      $this->_redirect('customer/account/login/'); 
      return; 
     } 
     $this->getLayout()->getBlock('pitsnews')->append(
      $this->getLayout()->createBlock('pitsnews/pitsnews') 
     ); 
     $this->getLayout()->getBlock('pitsnews/pitsnews')->assign('data', $data); 
     $this->renderLayout(); 
    } 
} 
+0

你可以從錯誤中讀出,你在呼喚一個關於它的任何方法之前,動態創建這個塊不存在函數追加。 – Peon 2012-08-06 10:32:47

+0

'$ this-> getLayout() - > getBlock('pitsnews')'返回的不是對象。請顯示'var_dump($ this-> getLayout() - > getBlock('pitsnews'));' – DaveRandom 2012-08-06 10:39:29

+0

@DaveRandom:是我調試了這一點,似乎我已經得到了解決方案。我想我在這裏錯過了一點。忘記在標記文件中添加布局。 ' – Siva 2012-08-06 11:07:21

回答

0

好像

$this->getLayout()->getBlock('pitsnews') 

不是一個佈局對象在這裏,所以驗證:

  • 如果您的佈局標記將塊注入此di spatcher
  • ,如果你沒有在您的擴展布局文件,那麼你需要調用
+0

非常感謝您的快速回復。這意味着我需要添加像這樣的 <參考名稱=「content」> '解決此問題rt ?? – Siva 2012-08-06 11:03:33

+0

:我還有一個疑問。 '$ count = Mage :: helper('checkout/cart') - > getSummaryCount();'此代碼返回購物車中物品的總數。我怎樣才能將這個變量'$ count'傳遞給視圖部分,例如,如果我們在zend框架中,我們有這樣的'$ this-> view-> var1 =「testing var1」;'傳遞變量來查看一邊。在magento中,我怎麼能通過valies前端。 – Siva 2012-08-06 11:19:51

+0

你可以設置任何變量到你的塊'$ blockObject() - > setWhatever('value');'並在視圖上你可以'$ this-> getWhatever();'或者直接在你的視圖中使用助手 – 2012-08-06 11:30:36