Почему последний путь лития (li3) не улавливает все?

Последнее подключение к литиевому маршрутизатору:

Router::connect('/{:controller}/{:action}/{:args}', 'Main::end');

Должны совпадать все маршруты? Нет? Но вместо того, чтобы выполнить мой метод Main :: end (который просто exit ('с некоторым текстом, для тестирования ...')), Lithium предоставил мне исключение диспетчера T_T:

 lithium\action\DispatchException (code 404)
 Controller `Sdsa` not found.
 path_to_my_root/libraries/lithium/action/Dispatcher.php: 239

Что я делаю не так?


person cl0udw4lk3r    schedule 14.01.2013    source источник
comment
Последняя запись маршрутизатора соответствует контроллеру и функции. поэтому /User/List будет соответствовать контроллеру User и функции List в этом контроллере. То, что у вас есть выше, - это 404, и чтобы изменить это, вы переопределяете сообщение 404, отправленное пользователю.   -  person Nils    schedule 14.01.2013
comment
Но я передал в качестве второго параметра действие Main :: end controller- ›... Кстати ... Я решил это, я опубликую решение!   -  person cl0udw4lk3r    schedule 14.01.2013


Ответы (1)


Решил мою проблему с самим собой, используя стандартное регулярное выражение:

Router::connect('/(.*)', 'Main::end');

который будет обрабатывать все запросы к Main :: end.

Как говорит Нильс, мое реальное решение не идеально из-за отсутствия обработки 404 страниц ...

Поскольку я пытаюсь использовать Backbone.js, возможно, я смогу обрабатывать клиентскую часть страницы 404 следующим образом: Как создать резервный маршрут для перехвата неизвестных страниц в backbone.js

person cl0udw4lk3r    schedule 14.01.2013
comment
Обратите внимание, что отказ от отправки 404: s и другие ошибки могут сбивать пользователей с толку. Например, если они неправильно написали URL-адрес. Кроме того, поисковые системы запутаются, если страница будет удалена, поскольку вы не вернете 404 за отсутствующую страницу. Если вы сделаете это для создания 404, вы можете просто отредактировать views\layouts\error.html.php. Вот примечание от Google относительно 404/410 (и мягких 404: s) googlewebmastercentral.blogspot.se/2011/05/ - person Nils; 14.01.2013
comment
Проблема в том, что я пытаюсь реализовать Backbone.js с литием, и пока мне нужен только дом в качестве домашней страницы (вместо Main :: end теперь Main :: home ...), но то, что вы говорите, правильно, возможно, мне следует направить домой напрямую из магистрали или вставить backbone.js во все литиевые макеты ... - person cl0udw4lk3r; 15.01.2013
comment
@ cl0udw4lk3r: ответы лития можно очень легко визуализировать как объекты JSON, добавив в маршрут правильный заполнитель {:type}. Предпочтительный способ - согласование содержания. - person Oerd; 22.01.2013