Установить маршруты в Кохана - PullRequest
1 голос
/ 06 февраля 2012

Если я определил 2 контроллера, A.php и B.php, и в каждом контроллере я определил действие индекса, как мне определить Route::set в файле bootstrap.php?

Ответы [ 3 ]

3 голосов
/ 06 февраля 2012

Маршрут по умолчанию должен работать нормально:

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

Пожалуйста, прочитайте документацию: http://kohanaframework.org/3.2/guide/kohana/routing

Этот маршрут по умолчанию будет соответствовать как контроллеру '/ a', так и контроллеру '/ b' и выполнять действие индекса, если в URI не указано другое действие.

2 голосов
/ 08 февраля 2012

Я прочитал документацию, и не совсем понятно, когда и почему вы хотите создать запись маршрута.

В принципе, запись маршрута необходима, если у вас есть URL, который не соответствует обычному/ контроллер / структура действия.Если вы создали контроллер A и контроллер B с индексными действиями, вам не нужно добавлять маршруты в bootstrap.php, если вы всегда собираетесь получить доступ к этим действиям с использованием стандартного синтаксиса URL:

http://www.example.com/A/index
http://www.example.com/B/index

Вы можете не указывать «index», так как это действие по умолчанию, если ничего не указано.

Допустим, вы хотите, чтобы контроллер A был контроллером сайта по умолчанию, а это означает, что вы не хотите использовать A вURL, вы хотите использовать действие сразу после домена:

http://www.example.com/index

Затем вам нужен маршрут, чтобы сообщить Kohana, что любой URL не соответствует ни одному из созданных вами маршрутов (или если у вас естьнет) должен обрабатываться маршрутом по умолчанию.Вы должны создать этот маршрут в bootstrap.php:

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

Это говорит о том, что если пользователь перейдет на http://www.example.com, Кохана будет использовать действие индекса контроллера A. Если пользователь перейдет на http://www.example.com/foo, тогда Kohana будет использовать действие foo контроллера A. Любой URL, который не соответствует ни одному другому контроллеру, попадет на контроллер A.Если пользователь запрашивает действие, которое A не обрабатывает, он получит исключение 404.

У вас все еще есть контроллер B, так что он будет работать нормально без какого-либо маршрута.Если пользователь переходит на http://www.example.com/B/index,, Кохана знает о контроллере B в приложении, поэтому он перейдет к действию index там.

0 голосов
/ 22 июля 2016

Ваша проблема может быть в файле .htaccess в папке kohana. Мне нужно было изменить «RewriteBase» на папку Kohana («base_url» из Kohana :: init в файле bootstrap.php), в противном случае я оказался в «404 - объект не найден». Тогда маршрут по умолчанию должен подойти.

...