Yii控制器命名约定

bkkx9g8r  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(122)

我有一个名为CategoryAdminController.php的控制器,它可以通过我的本地主机(Windows机器上)中的{siteurl}/categoryadmin/index来访问。但是当我尝试在我的远程服务器(Linux平台上)中启动它时,它无法加载页面。但是当我将我的控制器重命名为CategoryadminController.php(以及相应的类名)时,它工作正常。
有没有办法在加载页面的同时保持控制器中的原始名称(即:(单位:x/m/n/x)
根据Yii指南,似乎这是不可能的。
http://www.yiiframework.com/doc/guide/1.1/en/basics.convention
有什么想法吗?
谢谢你

5jdjgkvh

5jdjgkvh1#

要使Controller名称和Action名称保持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异常。
所以,最好还是遵守惯例。

aiqt4smr

aiqt4smr2#

在Linux操作系统上,它区分文件名的大小写,但在Windows上则不区分。您是否尝试访问它:一个月一个月?

vzgqcmou

vzgqcmou3#

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

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

相关问题