2010-04-29 11 views
0

Я работаю над cakephp и полностью новичком в php/cakephp. Не могли бы вы рассказать мне, что не так с моей конфигурацией маршрута здесь?CakePHP - Конфигурация маршрута

Router::connect(
'/news/:q/:page', 
array('controller' => 'news', 
     'action' => 'onDemand', 
     'mode'=>'news', 
     'page'=>1), 
array('pass'=>array('q','mode','page'), 
     'page' => '[\d]+')); 

Когда я получить доступ к странице, как/Новости/123 или/Новости/123/1, он пытается найти для действия «123» в контроллере новостей.

В основном все, что я хочу сделать, это то, что если пользовательские типы/новости/андроид, я хочу захватить «андроид» для запроса и возврата результатов. Если есть также результаты, необходимо поддерживать разбиение на страницы, т. Е. URL становится /news/android/(2...n).

+0

Какой путаный маршрут. Я бы рекомендовал вам прочитать главу «Маршруты», http://book.cakephp.org/view/46/Routes-Configuration, так как это поможет вам! –

+0

Спасибо, уже посмотрев на это. – aboxy

ответ

1

Вы можете просто сделать это:

Router::connect('/news/*', array('controller' => 'news', 'action' => 'onDemand')); 

Есть ваша функция OnDemand объявлена ​​как:

public function onDemand($subject, $page = null) 

Когда пользователь запрашивает /news/android или /news/android/2 торт будет вызывать onDemand('android') или onDemand('android', '2'), соответственно.

+0

Спасибо. Раньше у меня это было, но это ломало мой другой URL/news/recent/*. Извините, я должен был упомянуть об этом в моем первоначальном вопросе. Так что в основном , если пользовательский тип/новости/недавний/1, он должен перейти к действию = индекс , если пользовательские типы/новости/<Что-нибудь еще> - должен указывать на действие 'onDemand' Я играю с правом конфигурации Теперь. Я надеюсь, что концепция приоритетов существует для маршрутов. Thanks – aboxy

+0

OK. Я думаю, что это работает. У меня есть маршрут для/news/recent first, который отображает действие = индекс , а затем/news/* после этого. Я вижу, как работают мои ссылки. Есть комментарии? – aboxy

+0

Интересно. Однако это не работает для меня. Мне пришлось иметь onDemand do 'if ($ subject == 'recent') $ this-> recent();' Но если это сработает для вас, отлично! – webbiedave

Смежные вопросы