KohanaPHP 3 Проблемы с маршрутизацией - PullRequest
0 голосов
/ 16 марта 2011

У меня есть маршрут для пользовательского контроллера. Этот контроллер имеет около 20 методов, поэтому я не хочу устанавливать их вручную в маршрутах:

Route::set('user', 'user/<action>')
        ->defaults(array(
            'controller' => 'user',
            'action'     => 'index',
        ));

У меня также есть контроллер изображений (Controller_User_Pictures) с несколькими методами, которые используются для управления изображениями пользователей. Когда я создаю маршрут:

Route::set('pictures', 'user/pictures/<action>')
        ->defaults(array(
            'directory'  => 'user',
            'controller' => 'user_pictures',
            'action'     => 'index',
        ));

Это не работает.

Даже если я создаю отдельный контроллер (Controller_Pictures) и создаю маршрут, он не работает:

Route::set('pictures', 'user/pictures/<action>')
        ->defaults(array(
            'directory'  => 'user',
            'controller' => 'pictures',
            'action'     => 'index',
        ));

Во всех случаях возвращается ошибка: Method action_pictures does not exist, что означает, что маршрутизатор ищет действие, называемое картинками в пользовательском контроллере, что, конечно, неправильно.

Единственное решение, о котором я думаю, - это определить все маршруты в файле bootstrap.php. У вас есть лучшее решение?

Редактировать Второй вопрос, есть ли идеи, как заменить подчеркивание на дефис в любых действиях (конечно, в маршрутизации)?

1 Ответ

1 голос
/ 16 марта 2011

Порядок маршрутов важен; конкретные маршруты должны быть на первом месте.

Итак, ваш URL user/pictures/<action> запускает первый маршрут. Если вы поместите файл pictures-route выше общего маршрута пользователя, он должен работать просто отлично.

Еще одно замечание: если вы укажете каталог 'user', ваш контроллер будет Controller_User_Pictures в classes/controller/user/pictures.php

...