Yii控制器命名约定

时间:2013-11-11 02:41:30

标签: php linux apache yii

我有一个名为CategoryAdminController.php的控制器,可以在Windows机器上的localhost中由{siteurl}/categoryadmin/index访问。但是当我尝试在Linux平台上的远程服务器上启动它时,它无法加载页面。但是当我将控制器重命名为CategoryadminController.php(以及相应的类名)时,它运行正常。

有没有办法加载页面,同时在控制器中保留原始名称(即:CategoryAdminController.php

根据Yii指南,似乎不可能。

http://www.yiiframework.com/doc/guide/1.1/en/basics.convention

有什么想法吗?

谢谢

3 个答案:

答案 0 :(得分:2)

要保持控制器名称和操作名称CamelCased并在Linux上运行,您需要在URL中的每个单词之间添加短划线:

"{siteurl}/category-admin/index"  -> CategoryAdminController->indexAction()

"{siteurl}/category-admin/my-way"  -> CategoryAdminControllern->myWayAction()

这适用于 Linux Windows

Windows 读取文件和文件夹不区分大小写。并经常隐藏一些错误。

当您在Windows上进行开发时,常见的问题是...并创建链接categoryadmin操作系统会很高兴为您提供类似的文件 CaTegoRYadmiNcontroller.php忽略大写。

但是,当您在Linux上部署相同的代码和文件时,您将获得File Not Found个例外 所以,最好坚持惯例。

答案 1 :(得分:0)

在Linux操作系统上,文件名称区分大小写,但在Windows上则不区分大小写。您是否尝试访问它:{siteurl}/categoryAdmin/index

答案 2 :(得分:0)

您可以使用urlManager重写网址。在您的情况下,您可以使用以下代码:

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => FALSE,
    'rules' => array(
        'categoryadmin/<action:\w+>' => 'categoryAdmin/<action>'
    ),
),