1

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

有什么方法可以在将原始名称保留在控制器中的同时加载页面(即CategoryAdminController.php:)

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

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

有任何想法吗?

谢谢

4

3 回答 3

2

要保持控制器名称和操作名称 CamelCased 并在 Linux 上工作,您需要在 URL 中的每个单词之间添加破折号:

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

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

这适用于LinuxWindows

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

当您在 Windows 上开发时,常见的问题会出现......并创建一个链接categoryadmin,操作系统会很乐意为您提供一个文件,例如 CaTegoRYadmiNcontroller.php忽略大写。

但是,当您在 Linux 上部署相同的代码和文件时,您会遇到File Not Found异常。
所以,最好遵守约定。

于 2015-01-13T11:21:39.217 回答
0

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

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => FALSE,
    'rules' => array(
        'categoryadmin/<action:\w+>' => 'categoryAdmin/<action>'
    ),
),
于 2013-11-11T09:11:24.237 回答
0

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

于 2013-11-11T04:58:45.017 回答