2012-02-08 1 views
2

У меня есть маршрут:Kohana 3.2 Маршруты: Несколько каталогов

Route::set('foo/subdir', '<directory>/<variable>/subdir/<controller>/<action>'); 

Я хотел бы направить этот адрес на следующий контроллер/действие:

/application/classes/<directory>/subdir/<controller>.php::action_<action>() 

У меня уже есть и нужен этот маршрут тоже , что усложняет ситуацию:

Route::set('foo', '<controller>/<variable>/<action>'); 

Возможно ли это?

ответ

0

Я хотел бы добавить в подкаталог в каталог

Это будет возможно в Kohana v3.3 с использованием новой Route::filter функциональности. В настоящее время нет способа сделать это в Kohana 3.1 или 3.2 без изменения классов Route и/или Request.

+1

В конечном итоге я изменил класс запроса, чтобы добавить эту функциональность. –

+0

Может кто-нибудь, пожалуйста, напишите пример того, как это сделать? Это не совсем так, как документы Коханы объясняют многое. –

3

Почему нет, если задан маршрут по умолчанию после путь к каталогу.

Route::set('foo/subdir', '<directory>/<variable>/subdir/<controller>/<action>') 
    ->defaults(array(
     'directory'  => 'default_directory', 
     'controller' => 'index', 
     'variable'  => 'default_variable', 
     'action'  => 'index', 
    )); 

Kohanas routing поддерживает каталоги «изначально», нет необходимости взломать что-либо.

Обратите внимание, что имена ваших классов также должны содержать имя каталога.

+1

Что создает проблема - это subdir. Я хотел бы добавить subdir в каталог. Вы код выше не пойдет в каталог, указанный во втором фрагменте кода. –

0

Используйте REGEXP, чтобы поймать каталог и подкаталог как/directory/subdirectory/controller/action , чтобы соответствовать Route, как // где regexp позволяет вам помещать/внутри каталога. Затем внесите небольшие изменения в свой класс Route, чтобы изменить все/на _

Он еще не протестирован. ;) Но им около ...

+3

Возможно, вам стоит попробовать перед публикацией ... –