与app_controller相关的问题

时间:2011-07-14 10:31:29

标签: php cakephp

我正在尝试在我网站的每个页面中包含一个小代码。 有没有办法在不修改每个控制器的情况下做到这一点?

例如 - 我想从Message模型中读取/未读取消息。

我可以使用app_controller执行此操作吗?我在app_controller.php中添加了以下函数。 我需要建议。请帮帮我。

function messageStatus() {
    App::import('Model','Message');
    $new_message = $this->Message->find(
    'first',
            array (
                'conditions' => array (
                    'Message.status' => '1'
                )
            )
        );
    $this->set("new_message",$new_message); 
}

2 个答案:

答案 0 :(得分:1)

根据您要执行操作的时间,您必须在app_controller.php文件中覆盖以下某个功能(according to the documentation),:

beforeFilter()
afterFilter()
beforeRender()

由于所有其他控制器都将继承此类的方法,因此每次执行时都会执行您的操作(如docs中所指定)。

如果您希望控制器不运行app_controller中的代码,只需在本地重新覆盖该方法。

答案 1 :(得分:0)

正如user559744所述,您可以在应用程序中使用AppController来创建控制器可以访问的属性和方法。 AppController是控制器的父类。

您应该将app_controller.php从/ cake / libs / controller /复制到YOURAPP / app_controller.php,以避免更改核心文件。

http://book.cakephp.org/view/957/The-App-Controller