鬼一浪人 2015-06-08 12:44:16 9356次浏览 1条评论 3 1 0

就params下面的参数配置的获取方法是:

$params = Yii::$app->params;
print_r($params);
//框架默认提供了一个值,此为管理员邮件,输出的结果是 admin@example.com
echo $params['adminEmail'];

这样子该文件下的所有参数均可获取。
问题是web.php里面的参数如何获取,找半天网络教程无果。
遂采取php原生的简单的粗暴的方法。
我们知道web.php是在初始化的时候就被加载,那么是会存在于内存中的。

so,就有了下面的代码:

//获取全局配置参数,我们发现返回的数据确实是web.php返回的内容
global $config;
//$config此刻是一个多维数组。里面有我们需要的参数
$config['params']['adminEmail'] = 'test@admin.com';  //修改params下面的adminEmail这个值
//注意,这么修改后,并不影响原有的默认配置参数。

如果有更佳的方法,还望告知,真心需要!!!
多谢!!!

觉得很赞
  • 评论于 2015-06-15 11:12 举报
    yii::$app->params['adminEmail']
    

    你那个太费劲了。

    5 条回复
    评论于 2015-06-15 11:36 回复

    对于web.php里面的参数获取不到的,你可以试试

    评论于 2015-06-15 14:13 回复

    我想你弄错了一件事情,params.php是被引用为配置中params属性值,而整个web.php或main.php其实是将其中的数组映射为
    http://www.yiichina.com/doc/api/2.0/yii-web-application
    对象的属性。

    所以你要取别的字段,需要在这个类里去找到对应的属性名称,比如你如果需要获取language的设置,那么应该使用
    yii::$app->language
    来进行获取。

    评论于 2015-06-15 14:15 回复

    搞明白YII的加载机制是很重要的一件事情,或者你的IDE可以进行跟踪的话,也可以看到加载的过程的。

    评论于 2017-02-25 16:31 回复


    请问大神,如何通过代码修改web.php中的配置,yii2有内置的方法吗?

    评论于 2017-03-01 14:53 回复

    代码改可以,但是改完不能持久化。配置修改最好还是手动。

    觉得很赞
您需要登录后才可以评论。登录 | 立即注册