#cakephp #syntax #routes
#cakephp #синтаксис #маршруты
Вопрос:
Как мне создать простой маршрут в CakePHP?
Мне нужно, чтобы каждый URL-адрес был перенаправлен путем замены действия и контроллера. Я просто не мог понять синтаксис заполнителей.
Пример:
/files/read/3
Для
/read/files/3
— дополнительный —
В моем приложении я использую псевдонимы для контроллеров. и я хочу перенаправить каждый URL-адрес, содержащий определенное ключевое слово, в качестве действия на определенный контроллер.
Я также хочу указать исходное имя контроллера в качестве параметра.
Вот пример 1: 1: Для алис есть: fruits
и streets
.
Ключевое слово, которое я хочу перехватить в действии, это find
.
Новое имя контроллера — finder
.
Следующие вызовы соответствуют моему состоянию:
/fruits/find/apple/red
и /streets/find/longer
Маршрутизатор должен перехватывать эти URL-адреса и преобразовывать их в:
/finder/fruits/apple/red
(или укажите параметры другим способом, я не возражаю) и /finder/streets/longer
Как это должно быть сделано?
Ответ №1:
Вот строка кода, которую вам нужно вставить /app/config/routes.php
:
Router::connect('/:action/:controller/*', array('controller' => ':controller', 'action' => ':action'));
Узнайте больше: Как вы можете видеть из книги по CakePHP, существует несколько «зарезервированных» шаблонов для настройки маршрутизации. Примером может служить то, что я использовал в строке выше: :action
и :controller
. Эти шаблоны позволяют широко настраивать маршруты.
Осторожно: изменение порядка следования контроллеров и действий в URL-адресах может иметь непреднамеренные последствия для функциональности других функций CakePHP. Я не тестировал тщательно, но это всего лишь общее предупреждение.
Осторожно: Кроме того, я заметил, что вы вставили в свой пример: /files/read/3
. Возможно, это был просто какой-то фиктивный пример, но если вы действительно планируете использовать MVC с именем ‘file’, имейте в виду, что это приведет к конфликту с классами ядра CakePHP (например, File
модель будет конфликтовать с File
классом).
В любом случае, надеюсь, этот ответ вам хорошо поможет. И мне действительно нравится, как изменение имен контроллера и действий делает URL-адрес более читаемым. 😀
Комментарии:
1. Большое вам спасибо @YOMorales , по крайней мере, половина из этого теперь мне понятна. однако я все еще чего-то не понимаю, я добавлю это к самому вопросу.
2. Привет: Я постараюсь ответить на ваш вопрос позже, но сейчас я очень занят. 🙂