频道栏目
首页 > 资讯 > Yii > 正文

Yii框架中module(模块)或模块风格控制器的URL美化

16-01-07        来源:[db:作者]  
收藏   我要投稿

由于最近自己业余时间在写一套类似Tumblr的博客系统,涉及到的模型、控制器、视图比较多,如用户模块、文章模块、图片模块、音乐模块、视频模块、东西(商品)模块,各模块下标签、评论、分类、图片等等自成一块,这样的话控制器和视图如果单独开来的,将会显得很臃肿,繁杂,不便于管理和维护,但是因为功能暂时比较轻,又不想将其各个模块化,于是便准备用模块风格 的文件夹来管理控制器和视图,具体就是类似下面这种风格:

控制器(以文章为例)

视图(以文章为例)

上述控制器中,IndexController对应着原来的ArticleController,因为为了方便在urlManager中进行统一匹配,将所有模块主控制器名设为IndexController,例如MusicController为IndexController,以此类推。ArticleCategoryController改为CategoryController,以此类推,

这样就可以在URL中以形如article/category/create这种方式来访问category的create方法,而对原来article/create,现在配置urlManager仍以article/create的形式访问,具体在protected/config/main.php中设置urlManager如下所示:

/**
 * author:农夫庄园
 * url: http://www.icultivator.com/p/6168.html
 * website: http://www.icultivator.com
 */
'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
        ''=>'site/index',
        ''=>'site/',
        ''=>'/index/index',
        '/'=>'/index/view',
        '//'=>'/index/',
        '/tag/'=>'/index/tag',
        '/'=>'/index/',
        '//'=>'//view',    
        '///'=>'//',
        '//'=>'//',
    ),
    'showScriptName'=>FALSE,
),

这样就可以实现URL的统一美化,如查看article的id为1的文章,可以通过article/1来访问,tag为test的文章可以通过article/tag/test来访问,等等。

此外还要注意的是在各个IndexController中需要更改原来render的url路径为//article/(以article为例),在视图的article控制器对应各view文件中,也要修改相应的url路径,这样就可以实现URL的美化了,如果不想修改render里的路径,可以将原来article里的view文件放到/views/article/index文件夹下,就可以了。原理是如果render里的路径包含//,那么相应的url会解析成/path/to/views."/".article/view,否则会解析成/path/to/views/article/index."/".view,至于为什么,可以参考Yii核心源文件,简而言之,就是Yii::app( )->getViewPath( )和$this->getViewPath( )两个方法的调用问题,前者获取到的view文件是通过Yii::app( )->getViewPath( )."/".$viewName,后者是通过$this->getViewPath( )获取view文件。

当然如果您有兴趣的话,也可以通过继承CBaseUrlRule类来自定义一个UrlRule类实现自定义URL生成和解析,详情可参见这篇文章:Yii框架官方指南系列43——专题:URL(创建、路由、美化及自定义)。这里就不赘述了,对于Yii框架中URL的管理,可以参考这篇文章:Yii框架分析(八)——URL管理组件。

有什么疑问欢迎在下面的回复中讨论。

相关TAG标签
上一篇:新型ORM queryphp框架 操作类似jquery方式,该怎么处理
下一篇:https://www.dhgate.com/usr/register.do 小弟我想在这个网站怎么检查邮箱已被注册
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站