2021-05-03 10:57:15 150次浏览 3条回答 0 悬赏 10 金钱

在 footer 中获取最近发布文章的标题,这个 footer 是在 layout 中的,这怎么办呢?

每个控制器都写一次读取数据库?

sixstar
  • 回答于 2021-05-06 10:10 举报

    在基类控制器里面获取就好了

  • 回答于 2021-05-08 10:27 举报

    缓存处理一下

  • 回答于 2021-05-10 12:10 举报

    首先,楼上说的 “在基类控制器里获取” 这个方案 肯定是 可行的,这里 另外提供一个 低耦合 的方案

    1、写一个行为,比如叫 app\lan\MyBehavior ,在这个 行为 中提供一个方法,比如叫 getLatestArticle,在这个方法里 读取数据库 返回 最近发布的文章

    2、配置文件中,将这个行为附加到 当前的 控制器中,这样 每一个被请求的控制器 就都有了 getLatestArticle 这个方法

    'on beforeAction' => function() {
      Yii::$app->controller->attachBehavior('MyBehavior', 'app\lan\MyBehavior');
    }
    

    3、footer 里这样调用

    <?= $this->context->getLatestArticle() ?>
    

    对所有的控制器 不需要 任何代码的改动

您需要登录后才可以回答。登录 | 立即注册
醉挽清风
见习主管

醉挽清风 南京

注册时间:2018-07-03
最后登录:2021-05-08
在线时长:13小时6分
  • 粉丝1
  • 金钱100
  • 威望10
  • 积分330

热门问题