AppController中的CakePHP变量集在一个控制器中可见,在另一个控制器不可见



在cakehp2.0中,我试图在AppController中设置一个变量,以便可以通过以下方式在任何子类和视图中访问该变量:

function beforeFilter() {       
    $this->set('lang', self::getCurrentLanguage()); // set to access it also from Views
    $this->set('conf', self::getConfig());          // set to access it also from Views     
    $this->lang = self::getCurrentLanguage();   // set to access it also from Controllers
    $this->conf = self::getConfig();            // set to access it also from Controllers
    $this->set('user', $this->Session->read('User'));
    $this->user = $this->Session->read('User');     
}

当我使用echo$lang;在View和echo$this->lang中的任何控制器中,除了具有相应View:的控制器

echo $conf;
echo $lang;
---
Notice (8): Undefined variable: conf [APPviewsadminproducts.ctp, line 7]
Notice (8): Undefined variable: lang [APPviewsadminproducts.ctp, line 8]

由于类AdminController扩展了AppController,所以我期望得到与AppController的任何其他子类相同的行为。已经花了半天时间寻找问题所在。调查的起点在哪里?我应该先检查什么?

AdminController有什么问题,因为它没有"看到"这些变量,但其他类没有这个问题?这是唯一适用于这个特定类的变通方法:

$this->set('conf', parent::getConfig());

检查您是否定义了AdminController::beforeFilter()并且忘记调用AppController::beforeFilter()

AdminController:中

public function beforeFilter() {
    parent::beforeFilter();
}

食谱中的应用程序控制器部分警告您这一点:

还记得在子控制器回调中调用AppController的回调以获得最佳结果:

相关内容

  • 没有找到相关文章

最新更新