2012-05-04 4 views
3

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

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

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

Example Link

Но проблема с этим решением является то, что каждый раз, когда я хочу добавить контроллер мне нужно добавить следующие строки носком мой файл конфигурации/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, мне кажется, что мне нужна SUPER Advanced routing ... Или я просто этого не понимаю.

CakePHP версии 2.1

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

ответ

0

Ваш подход в основном правильный, нет волшебного переключателя, который исправит эту проблему. Я написал article about this kind of routing некоторое время назад, это для ранних версий торта, но по-прежнему актуально с незначительными изменениями (надеюсь).

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

  • Нет связанных вопросов^_^