2016-12-14 20:40:27 1750次浏览 1条回答 0 悬赏 10 金钱

YII2里有很多变量,如数据库配置信息,是否开启URL等
想布局一个独立的文件,在这个文件里配置上上面的变量,在后台可以随时修改。

请问这个文件要如何布局,在哪里加载?

  • 回答于 2016-12-15 10:28 举报

    依我拙见,可以在应用的发布目录下生成config文件夹,在里面(通过后台动态生成)生成配置
    然后在入口文件中判断此文件中是否有需要重新载入的配置文件,如果存在依次载入,并合并到$config变量中,记得要在默认变量之后,这样新的动态配置会覆盖掉默认(手动)的应用配置
    自定义的配置文件书写格式可自由,注意不要把默认的$config变量全部覆盖掉就行,引入自定义配置文件后与默认配置文件的$config合并数组,应该是不会出现这个问题吧。
    (这一种在入口文件应该不能直接访问数据库查询配置参数,所以是后台配置入库后生成的php文件)

    第二个思路:
    可以生成在应用程序目录中,不被web所访问的目录,config文件夹或者其他地方,只要能引用到就行(生成文件或者数据库查询,只要能获取参数就行),然后创建总的应用控制器继承yii的controller,在自定义的控制器类中在重新加载你的动态配置,具体的加载方法还没看,可以看看yii中的核心控制器有没有对应的方法

    第三种思路:
    如果不是大量配置,或者就算是大量配置,这个方法可能使用起来有点麻烦,就是在每个需要使用动态配置的地方(获取配置在文件或者数据库)利用yii的方法给操作重新定义配置,
    例如你说的:urlManager动态控制

    \Yii::$app->urlManager->enablePrettyUrl = true/false;
    

    这句话控制当前操作是否启用urlManager

    只是想法,没有具体实践,不到之处还望见谅,一起探讨

您需要登录后才可以回答。登录 | 立即注册
okokad
经理

okokad

注册时间:2016-02-29
最后登录:2017-07-01
在线时长:49小时26分
  • 粉丝12
  • 金钱25
  • 威望80
  • 积分1315

热门问题