Methods 如何在Yii中的所有页面请求中触发方法?
在我的网站的标题部分,我想显示新的消息。我有一个获取新方法并返回它们的方法。问题是标题部分位于Methods 如何在Yii中的所有页面请求中触发方法?,methods,yii,controller,Methods,Yii,Controller,在我的网站的标题部分,我想显示新的消息。我有一个获取新方法并返回它们的方法。问题是标题部分位于布局部分,我不想在所有控制器中重复一种方法 如何通过不将方法复制到我的所有控制器来实现这一点?我想在每个页面请求上触发newMessages()方法,为登录用户收集新消息。如何正确执行此操作?您可以在另一个控制器操作中使用导入控制器。像下面这样 class AnotherController extends Controller { public function actionIndex()
布局
部分,我不想在所有控制器中重复一种方法
如何通过不将方法复制到我的所有控制器来实现这一点?我想在每个页面请求上触发
newMessages()
方法,为登录用户收集新消息。如何正确执行此操作?您可以在另一个控制器操作中使用导入控制器。像下面这样
class AnotherController extends Controller
{
public function actionIndex()
{
Yii::import('application.controllers.admin.YourController'); // YourController is another controller in admin controller folder
echo YourController::test(); // test is action in YourController
}
}
在控制器中,覆盖oOntroller类函数beforeAction() 返回值可用于停止处于停滞状态的请求。因此,如果返回false,则不调用控制器操作,反之亦然()
参考资料:在这种情况下,我必须在所有控制器中的每个操作中放入
Yii::import
。难道没有更好的办法吗?如果我有30个控制器和很多动作方法呢?这是一个错误提示如果您不喜欢使用导入,我建议您使用来自视图文件的AJAX请求…您能给出一个示例,每10秒提取一次新消息吗?谢谢。我已经通过ajax请求处理了它,但您的回答回答了我的问题。;-)
protected function beforeAction($event)
{
$someResult = doSomething()
if ($someResult == $someValue)
{
return true;
}
else
{
return true;
}
}