Kohana 3: ошибка маршрутизации с подкаталогами, контроллер не существует - PullRequest
1 голос
/ 07 октября 2010

Итак, я пытаюсь построить маршрут с подкаталогами и следую вики-руководству Kerkness, но продолжаю получать ошибки.Если бы кто-то мог указать, что я делаю неправильно, я был бы очень признателен.

http://kerkness.ca/wiki/doku.php?id=routing:building_routes_with_subdirectories

Код:

Route::set('default', '(<directory>(/<controller>(/<action>(/<id>))))', array('directory' => '.+?'))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'main',
        'action'     => 'index',
    ));

URL:

/admin/weather/feedback

Файл:

/application/classes/controller/admin/weather/feedback.php
class Controller_Admin_Weather extends Controller_Admin_Base {

Ошибка:

 ReflectionException [ -1 ]: Class controller_admin_weather does not exist

Ответы [ 2 ]

3 голосов
/ 08 октября 2010

Как сказал @mikelbring, ваш класс контроллеров назван неправильно. Класс в этом файле должен называться Controller_Admin_Weather_Feedback

Вам действительно нужно так много дополнительных сегментов в вашем маршруте? Также; если в URL-адресах нет переменных элементов, вы можете просто придерживаться следующих значений по умолчанию:

Route::set('my_route_name', 'admin/weather/feedback')
    ->defaults(array(
        'directory'  => 'admin/weather',
        'controller' => 'feedback',
        'action'     => 'index',
    ));

Если ваш класс был в /application/classes/controller/admin/weather.php и имел метод action_feedback(...), вы могли бы использовать следующий маршрут

Route::set('my_route_name', 'admin/weather/feedback')
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'weather',
        'action'     => 'feedback',
    ));
3 голосов
/ 08 октября 2010

Погода должна быть контроллером, а не обратной связью.Создайте weather.php в папке администратора и установите контроллер как Controller_Admin_Weather, а затем действие action_feedback.

...