Yii系列-02:定制 Web App
应用的行为定制大多在config/main.php中进行,该文件返回key-value数组,用于配置web app的初始状态。
一、将 yii framework 包含在应用目录内
Yii Based Web Application通过 Yii::createWebApplication创建;默认地,该Yii类包含在Yii Root目录下的framework目录,位于当前Web Application之外。这种配置适合在一个服务器上部署多个基于Yii的应用,Web App均指向这个Yii Root目录,也利于升级。
当仅有一个Yii Based 应用,或者需要开发用于发布的Web App时,将所有资源统一打包更为用户友好一些。具体步骤为:
- YiiRoot/framework目录移入应用的portected目录下,即AppRoot/protected/framework。在 index.php中,require_once(dirname(__FILE__).'protected/framework/yii.php')
- 在protected/config/main.php中,修改basepath指向protected目录,该路径需要包含framework的父目录。
二、定制App名称
在protected/config/main.php中,修改键name的值,将显示在页面左上方。
三、定制默认首页
在protected/config/main.php中,修改键defaultController的值为指定的controller,在该
controller中须指定默认action。当request中未明确目的时,采用defaultController/defaultAction
来响应。
四、定制URL模式
默认url形如 http://youAppRoot/index.php?r=controller/action,该url比较晦涩,可定制为 http://youAppRoot/controller/action。通过定制protected/config/main.php返回的components数组中的urlManager来实现,如下所示。
- 'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
),
'showScriptName'=>false,
),- urlFormat设置path:默认值为get,即在url中通过get参数r来表示请求的资源(/path/to/EntryScript.php?name1=value1&name2=value2...)。path则通过路径形式表示( /path/to/EntryScript.php/name1/value1/name2/value2...)。
- showScriptName设置为false:在url 中不出现 入口文件“/index.php”,此时需要设置web 服务器的转发规则,将不能明确资源位置的请求均转发至入口文件。
- rules设置了action的参数映射模式,用正则表达式来表示,具体参阅 CUrlManager
五、定制DB
通过定制protected/config/main.php返回的components数组中的db来实现:
'db'=>array(
'emulatePrepare' => true,
'charset'
=> 'utf8',
'connectionString' =>
'mysql:host=myDbHost;dbname=myDbName',
'username'
=> 'username',
'password'
=>'password',
),
在程序中需要访问DB时,通过Yii::app()->db来获取连接。