cakeCake PHP 3 Paring Маршрутизация со столом

Я пытался получить красивый URL с маршрутизатором с Cake.

www.mysite.com/category/slug

www.mysite.com/slug

www.mysite.com/category/

Я думаю, что нет формулы, чтобы получить именно то, что я хочу, поэтому я хочу явно сопоставить каждый URL. Я хочу, чтобы моя таблица маршрутов выглядела так

  id | url | controller | action | param

Поэтому, когда кто-то идет в
www.mysite.com/mysubcategory/my-title-of-page

Я хочу, чтобы он сопоставил ссылку «mysubcategory / my-title-of-page» со столбцом url и продолжил. Каков наилучший способ сделать это?

Я предполагаю, что будет направлять весь трафик на контроллер маршрута

Router::connect('/*', array('controller' => 'Routes', 'action' => 'redirs'));

Но когда он перенаправляет, я хочу, чтобы он отображал симпатичный URL в браузере, я не хочу, чтобы он отображал статьи / view / 12

благодарю вас

0

Решение

Вы можете либо динамически создавать свои маршруты с информацией, полученной из базы данных, либо использовать собственный класс маршрутов, который просматривает таблицу. Если у вас есть только несколько маршрутов, то вы можете использовать первый.

В вашем routes.php просто прочитайте свою таблицу и соедините маршруты, это должно быть так просто. Вот очень простой пример:

use Cake\ORM\TableRegistry;

$Routes = TableRegistry::get('Routes');
$routes = $Routes->find();

foreach ($routes as $route) {
Router::connect(
$route->url,
[
'controller' => $route->controller,
'action' => $route->action
],
[
'pass' => [$route->param]
]
);
}

Для чего-то динамического, проверьте, например, Отображение слагов из базы данных при маршрутизации

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector