Yii框架中Gii的路由在哪里?

时间:2011-12-24 04:54:37

标签: php url-routing yii yii-components

我在webroot中创建了一个Yii应用程序。我启用了Gii模块并修改.htaccess以删除url中的index.php部分。

我还在config / main.php配置文件中定义了urlManager组件。

'urlManager' => array(
    'showScriptName' => FALSE,
    'urlFormat' => 'path',
    'rules' => array(
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>'
        )
)

当我在浏览器中输入http://www.mydomain.com/gii时,我会被重定向到http://www.mydomain.com/gii/default/login

显然,rules中没有匹配的网址urlManager。这是否意味着当Yii找不到任何匹配的url规则时,它会开始寻找匹配的模块吗?

2 个答案:

答案 0 :(得分:4)

bobo,是的,它确实看起来像Yii开始寻找匹配的模块:

yii/framework/gii/GiiModule.php, Line 43
* http://localhost/path/to/index.php?r=gii
*
* If your application is using path-format URLs with some customized URL rules, you may need to add
* the following URLs in your application configuration in order to access GiiModule:
* <pre>
* 'components'=>array(
*     'urlManager'=>array(
*         'urlFormat'=>'path',
*         'rules'=>array(
*             'gii'=>'gii',
*             'gii/<controller:\w+>'=>'gii/<controller>',
*             'gii/<controller:\w+>/<action:\w+>'=>'gii/<controller>/<action>',
*             ...other rules...
*         ),
*     )
* )
* </pre>

看起来它以正常规则开始,然后继续向下尝试其他模块(及其控制器/操作)。似乎是使用模块ID(在本例中为gii)作为它的第一部分。

进一步研究,是的,就是这样。有关详细信息,请参阅Yii Module page

答案 1 :(得分:0)

你是什​​么意思? Gii是一个模块,URL是正确的你有默认值,因为CWebModule中的defaultController属性是'default'你可以扩展Gii并根据需要自定义它。