Чтобы задать свой вопрос, мне нужно сначала объяснить мой код ...
У меня есть контроллер (Controller_App), который расширяет Controller_Template. В представлении шаблона контроллера у меня есть вкладки jQuery с 3 вкладками. Когда я получаю доступ к URI: /view/26
, включается следующий маршрут:
Route::set('view_story', '<action>/<id>(/<stuff>)', array(
'action' => 'view',
'id' => '\d+',
'stuff' => '.*',
))
->defaults(array(
'controller' => 'app',
));
Затем вызывается следующая функция в Controller_App, которая устанавливает URI вкладки jQuery «Исследовать» и делает ее выбором по умолчанию:
public function action_view($id)
{
$this->template->controller['explore'] = Route::get('explore')
->uri(array(
'controller' => 'explore',
'id' => $id,
));
$this->template->default_tab = 2;
}
Вот мой маршрут "изучения":
Route::set('explore', '<controller>/<id>', array(
'controller' => 'explore',
'id' => '\d+',
))
->defaults(array(
'action' => 'index',
));
Проблема:
Когда я пытаюсь получить доступ к истории с помощью URL: «myhost.com/view/26», он все устанавливает, но думает, что «/ view» - это каталог, поэтому пытается вызвать «myhost.com/view/». explore / 26. Поскольку нет контроллера с именем view, я получаю ошибку 404. Мне удалось обойти ошибку 404, создав следующий маршрут:
Route::set('explore', '(<directory>/)<controller>/<id>', array(
'directory' => 'view',
'controller' => 'explore',
'id' => '\d+',
))
->defaults(array(
'directory' => '',
'action' => 'index',
));
... а затем изменив мою функцию на:
public function action_view($id)
{
$this->template->controller['explore'] = Route::get('explore')
->uri(array(
'directory' => '',
'controller' => 'explore',
'action' => 'index',
'id' => $id,
));
$this->template->default_tab = 2;
}
Но когда страница загружается, она вызывает jQuery.get (), но пытается вызвать файл PHP в каталоге "/ view" вместо текущего каталога.
Я не знаю, является ли это простой проблемой маршрутизации, или я вообще лаю правильное дерево. Но я перепробовал все разные комбинации маршрутов и не могу понять это. Все предложения приветствуются!
Спасибо,
Brian