php - 如何使自定义设置数据在 Yii 2 中全局可用?

标签 php yii yii2

我正在创建一个将一些设置存储在数据库中的应用程序,理想情况下,最好在引导过程中加载这些设置并通过对象全局提供它们。

这能以某种方式完成并添加到 Yii::$app->params 吗?

比如您可以创建一个类并以数组或对象实例的形式返回详细信息?

最佳答案

好的,我知道怎么做了。

基本上你必须实现 bootstrapInterface ,下面是我的情况的示例。

设置实现接口(interface)的类的路径:

app/config/web.php:

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => [
                    'log',
                    'app\base\Settings',
    ],
    //.............
];

所以我在以下位置放置了一个名为 Settings.php 的类:app\base\Settings.php

然后这是我的 Settings.php 文件:

namespace app\base;

use Yii;
use yii\base\BootstrapInterface;

/*
/* The base class that you use to retrieve the settings from the database
*/

class settings implements BootstrapInterface {

    private $db;

    public function __construct() {
        $this->db = Yii::$app->db;
    }

    /**
    * Bootstrap method to be called during application bootstrap stage.
    * Loads all the settings into the Yii::$app->params array
    * @param Application $app the application currently running
    */

    public function bootstrap($app) {

        // Get settings from database
        $sql = $this->db->createCommand("SELECT setting_name,setting_value FROM settings");
        $settings = $sql->queryAll();

        // Now let's load the settings into the global params array

        foreach ($settings as $key => $val) {
            Yii::$app->params['settings'][$val['setting_name']] = $val['setting_value'];
        }

    }

}

我现在可以通过 Yii:$app->params['settings'] 全局访问我的设置。

关于引导东西的其他方法的额外信息 here .

关于php - 如何使自定义设置数据在 Yii 2 中全局可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778477/

相关文章:

php - PDO 更新失败

php - 已部署的 Yii 应用程序无法正确构建域子文件夹的 url

php - 如何在 Yii2 查询中执行 mysql 函数?

javascript - Yii2,Javascript 只能在模态中工作

javascript - 删除现有项目中未使用的文件和文件夹

php - 显示html/php所有特殊字符

php - 在没有 libxml2 的情况下安装 PHP 5

php - 如何在 YiiBooster 模块中设置 TbExtendedGridView 的页面大小?

php - 如何修复此错误 404 系统无法找到请求的操作 "index"

javascript - 删除表格 HTML 上的标签