我正在尝试在我网站的每个页面中包含一个小代码。 有没有办法在不修改每个控制器的情况下做到这一点?
例如 - 我想从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);
}
答案 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,以避免更改核心文件。