|
Cake-PHP.ru Форум программистов CakePHP (на сайт)
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 12 Окт 2009 22:54:07 Заголовок сообщения: Подсобите с роутером |
|
|
Ситуация в следующем.
Хочу сделать custom урлы. То есть чтобы юзер мог использовать _любые_ урлы (кроме запрещённых /admin например и т.п.)
http://www.flipflops.org/2009/09/29/cakephp-menu-helper-for-tree-data/ - этот хелпер взят за основу
В качестве парсера урла выступает, разумеется, конкретная функция. в моём случае в posts_control.php функция view
Роутер выглядит следующим образом
Router::connect('(?!admin|maps|news|pages|contacts|pieces|sections|users)(.*)', array('controller' => 'posts', 'action' => 'view'));
Ну и первой строкой прописана / главная страница сайта
В результате чудесно отрабатываются страницы вида
/my-personal/url/can_be_any
/Super-url
и так далее, ну и, соответственно,
/news
/pages - урлы (указанные в роутере) отображаются как положено, не моим обрабочиком.
Всё отлично, кроме одного момента, в случае генерации html->link или paginator-а, я получаю ужасного вида урлы:
http://tree.tt:8888/(?!admin|maps|posts|pages|contacts|pieces|sections|users)(.news/page:2)
Да, урл выглядит именно так. Со скобками и т.п. бредом
passedArgs - передаётся педжинатору аккуратно, в самой переменной $this (debug($this)) - нет никакого упоминания подобного дикого урла. Почему регексп перебирается дальше? Непонятно
То же самое происходит с урлом, генерируемым html->link для view post
http://tree.tt:8888/(?!admin|maps|posts|pages|contacts|pieces|sections|users)(.7/) - вместо /posts/view/7
А вот урлы для /posts/edit/7, /posts/delete/7 - генерятся нормально, как положено
Я где-то неправильно прописал Router? или есть какая-то другая бага? подскажите, пожалуйста. Перерыл документацию по Router - но более ничего путного не нашёл
Буду признателен за советы! |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 12 Окт 2009 23:10:04 Заголовок сообщения: |
|
|
Как это часто бывает, почти сразу нашёл почти подходящий ответ
во-первых смотрим тут:
http://dsi.vozibrale.com/articles/view/advanced-routing-with-cakephp-one-example
если использовать такой роутер, то урлы в педжинации получаются правильные нормальные
Затем, чтобы в в педжинации шёл не контроллер (в моём случае posts) а кастомный урл, необходимо в странице index.ctp прописать что-то вроде:
<? $paginator->options(array('url' => '../../news')); ?>
(это, кстати, я почерпнул на этом форуме |
|
Вернуться к началу |
|
|
|
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы можете редактировать свои сообщения Вы можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group Русская поддержка phpBB
|