2012-08-06 95 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