2011-11-17 48 views
1

当我尝试使用错误的控制器时,我得到了这条消息,并且我发现我没有得到正确的错误cakephp中的错误我在2.0中.0正确的:CakePHP 2.0.3致命错误对象上的flash()

现在,当我尝试了错误的控制器我只得到这样的信息:

Fatal error: Call to a member function Flash() on a non-object in 
/srv/www/htdocs/web843/HTML/schaetzmal/lib/Cake/View/Layouts/default.ctp 
on line 44 

是否CakePHP的2.0.3有一个错误还是我错过的东西安装,让工作这样或别的什么我可以做什么?

回答

5

确保您已将会话帮助程序添加到您的公共$helpers数组中。

class SomethingsController extends AppController { 
    public $helpers = array('Session'); 
} 

或者使得会议助手是适用于所有的控制器,你可以把它添加到a global AppController

class AppController extends Controller { 
    public $helpers = array('Session'); 
} 
+0

是它的工作原理不容理解它,因为我没有使用任何会话和IM称为非现有控制器什么cakepp 2.0.3改变我需要包含会话帮助器 – webfacer

+0

flash()是SessionHelper的一种方法。我相信,会话处理是通过SessionComponent完成的,你不必为了使用Flash消息而包含它。 – mensch

+0

因为我的英语你的确了解我错了。我打电话给一个“不存在的控制器”,然后我得到了这个消息。我举例说:“http://example.com/kkkk”然后我得到了错误的致命错误信息。但是当我做你说的包括会话助手时,它可以正常工作,但不理解它 – webfacer

0

我发现一些问题,为什么我的AppController没有工作。

曼希一样说我在我的AppController全球使用Session但that's不是解决方案,因为CakePHP的书在“a global AppController

注意 的CakePHP从合并下列变量说在AppController中到应用程序的控制器:

  • $组件
  • $佣工
  • $使用

但it's没有发生。因为我将它覆盖在公共变量$helpers中。 therfore我把给定一个家长和与它合并它:

<? 

class AppController extends Controller { 

    public $viewClass = 'Theme'; 
    public $theme; 

    public function beforeFilter() { 
     parent::beforeFilter(); 
     $this->theme = 'SM'; 
     $this->helpers = array('Form','Html','Js'); 
    } 

} 

?> 

$this->helpers = array('Form','Html','Js');做合并,它工作正常。 感谢你们

感谢帮助曼希这是我所需要的黑客