我正在创建一个应用程序,它将一些设置存储在数据库中,理想情况下,在引导期间加载这些设置并通过全局对象使它们可用是一件好事.
可以这样做并以Yii::$app->params某种方式添加吗?
比如你可以创建一个类并将细节作为数组或对象实例返回?
Bre*_*ett 34
好的,我发现了怎么做.
基本上你必须实现bootstrapInterface,下面举例说明我的情况.
设置实现接口的类的路径:
应用程序/配置/ web.php:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => [
'log',
'app\base\Settings',
],
//.............
];
Run Code Online (Sandbox Code Playgroud)
所以我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'];
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在可以通过Yii:$app->params['settings']全局访问我的设置.
关于在这里引导东西的其他方法的额外信息.
| 归档时间: |
|
| 查看次数: |
21326 次 |
| 最近记录: |