Layout 中的数据获取问题 [ 2.0 版本 ]
在 footer 中获取最近发布文章的标题,这个 footer 是在 layout 中的,这怎么办呢?
每个控制器都写一次读取数据库?
最佳答案
-
首先,楼上说的 “在基类控制器里获取” 这个方案 肯定是 可行的,这里 另外提供一个 低耦合 的方案
1、写一个行为,比如叫
app\lan\MyBehavior
,在这个 行为 中提供一个方法,比如叫getLatestArticle
,在这个方法里 读取数据库 返回 最近发布的文章2、配置文件中,将这个行为附加到 当前的 控制器中,这样 每一个被请求的控制器 就都有了
getLatestArticle
这个方法'on beforeAction' => function() { Yii::$app->controller->attachBehavior('MyBehavior', 'app\lan\MyBehavior'); }
3、footer 里这样调用
<?= $this->context->getLatestArticle() ?>
对所有的控制器 不需要 任何代码的改动
我姓!,名!! 觉得很赞
其他 3 个回答
醉挽清风 南京
注册时间:2018-07-03
最后登录:2022-09-06
在线时长:15小时38分
最后登录:2022-09-06
在线时长:15小时38分
- 粉丝1
- 金钱180
- 威望10
- 积分430