2013-11-11 3 views
1

У меня есть контроллер с именем CategoryAdminController.php, к которому можно обратиться по адресу {siteurl}/categoryadmin/index в моем локальном хосте, который находится на компьютере под управлением Windows. Но когда я пытаюсь запустить его на удаленном сервере, который находится на платформе Linux, он не может загрузить страницу. Но когда я переименую мой контроллер как CategoryadminController.php (и соответственно имя класса), он работает нормально.Yii Controller Naming Convention

Есть ли способ, чтобы загрузить страницу, сохраняя при этом оригинальное имя в контроллере (например: CategoryAdminController.php)

Согласно Yii руководства, кажется, что это не представляется возможным.

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

Любые идеи?

Спасибо

ответ

0

Он чувствителен к регистру для имени файла-х, когда на ОС Linux, но не на Windows. Вы пытаетесь получить к нему доступ: {siteurl}/categoryAdmin/index?

+0

Привет, Спасибо за ваш ответ. Да, он чувствителен к регистру только в Linux. да, я пробовал {siteurl}/categoryAdmin/index и работал. Но мне нужно, чтобы он работал даже для нижнего регистра. (например: {siteurl}/categoryadmin/index) – asankasri

+0

Извините за мой поздний ответ, вы можете установить правила перезаписи в файле .htaccess. – kingtreecome

+0

i.e .: 'RewriteRule^categoryadmin/index $ /index.php?r=categoryAdmin/index [NC, L, QSA]' – kingtreecome

0

Вы можете переписать URL-адреса, используя urlManager. В вашем случае вы можете использовать следующий код:

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

Чтобы сохранить имена имена контроллера и действия верблюд накладного и работает на Linux, вам нужно добавить тире между словами в URL:

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

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

Это будет работать как на Linux и Windows.

Общая проблема возникает при разработке в Windows ... и там «categoryadmin» и «CaTegoRYadmiN» - одно и то же (окна не различают капитализацию в именах файлов).

Так что, когда вы спросите Windows «у нас есть файл с именем CaTegoRYadmiNcontroller.php» он счастливо возвращает «CategoryAdminController.php».
Но при развертывании того же кода и файлов на Linux вы получите File Not Found исключений.

+0

это правильный ответ и должен быть выбран +1 –

Смежные вопросы