Конфигурация маршрутизатора CakePHP Удалить страницы в URL

В настоящее время я ищу решение для удаления «страниц» из URL-адреса, но не затруднять добавление контроллера.

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

Router::Connect('/*', array('controller' => 'pages', 'action' => 'display'));

Пример ссылки

Но проблема с этим решением заключается в том, что каждый раз, когда я хочу добавить контроллер, мне нужно добавить следующие строки в мой файл config/routers.php

Router::Connect('/Users/:action/, array('controller' => 'Users');
Router::Connect('/users/:action/, array('controller' => 'Users');

Причина, по которой я добавил эти две строки, заключается в том, что я не хотел, чтобы URL-адрес был чувствителен к регистру.

Я также знаю, что не так часто случается, что после того, как веб-сайт «ЗАВЕРШЕН», контроллеры меняются.

Итак, мое решение было следующим:

/*
 * Get URL
 * Seperate in array
 * Remove empty elements
 */
$url = array_filter(explode("/", Router::url()));

/*
 * Get Controllers list
 */
$Controllers = App::objects('controller');
$CleanControllers = array();

/*
 * Remove string 'Controller' from element
 * lower string
 */
foreach($Controllers as $Controller) {
    $CleanControllers[] = strtolower(str_replace('Controller', '', $Controller));
}

/*
 * Check if first element, from URL, is NOT a controllers array
 */
if(!in_array(strtolower(reset($url)), $CleanControllers)) {
    /*
     * Forward to "Pages" controller 
     */
    Router::connect('/', array('controller' => 'Pages', 'action' => 'display', 'home'));
    Router::connect('/*', array('controller' => 'Pages', 'action' => 'display'));
}

/*
 * Check if first element, from URL, is NOT a controllers array
 */

CakePlugin::routes();

require CAKE . 'Config' . DS . 'routes.php';

Итак, мой вопрос: это решение УБИЙЦА производительности? Если да, то кто-нибудь знает лучшее решение?

Потому что, когда я смотрю на расширенную маршрутизацию от CakePHP, мне кажется, что мне нужна СУПЕР Расширенная маршрутизация... Или я просто не понимаю ее.

ТОРТ PHP Версия 2.1

Спасибо за вашу помощь!


person Ian van Wijk    schedule 04.05.2012    source источник


Ответы (1)


Ваш подход в основном правильный, нет волшебного переключателя, который решит эту проблему. Я написал статью об этом виде маршрутизации. назад, это для более ранних версий торта, но все еще актуально с небольшими изменениями (надеюсь).

person dr Hannibal Lecter    schedule 04.05.2012