Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Подсобите с роутером

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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')); ?>

(это, кстати, я почерпнул на этом форуме Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru