Kohana маршрутизация - подпапки - PullRequest
0 голосов
/ 06 января 2012

Hy.У меня есть 2 контроллера, первый приложение / классы / контроллер / welcome.php и второй приложение / классы / контроллер / admin / welcome.php .

И у меня есть следующие маршруты, установленные в bootstrap.php

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

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

Если я получаю доступ к example.com / welcome , он вызывает index action из application / classes / controller / welcome.php контроллер (это хорошо), если я захожу на example.com / admin / welcome , он вызывает index action от application / classes / controller / admin / welcome.php контроллер (это хорошо),

, но если я получаю доступ просто example.com , он вызывает приветствие администратора, а недругой, и я не могу понять, почему.

Я хочу это: если я получу доступ к example.com , то вызову index action из application /classes / controller / admin / welcome.php контроллер.Как я могу решить это?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Похоже, вы установили тег каталога на первом маршруте как необязательный, и поэтому он совпадает, когда каталог не указан. Попробуйте:

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

Это должно сделать тег обязательным, и поэтому он не будет совпадать с /.

0 голосов
/ 11 января 2012

Указанные вами маршруты сопоставляются сверху вниз: будет использоваться первый из них, который соответствует. Итак, поменяйте местами ваши маршруты, и это должно работать (сделайте маршрут 'admin' последним).

...