Anonymous
Избежание взаимодействия между пулами и именами контроллеров или плагинов в маршрутизаторе cakephp 2.x
Сообщение
Anonymous » 28 июн 2024, 06:54
Я ищу способ автоматически избежать взаимодействия между пулями и контроллером/плагином в URL-адресе cakephp.
с помощью этой статьи (
http://lecterror.com/articles/view/advanced-routing- with-cakephp-one-example) моему файлу Route.php это нравится:
Код: Выделить всё
$exceptions = Cache::read('exception_url_list');
if ($exceptions===false) {
$controllers=App::objects('Controller') ;
$plugins=App::objects('plugin');
$i=0 ;
foreach ($controllers as $controller) {
$list[$i]=str_replace('Controller','',$controller) ;
$i++ ;
}
$exceptions=array_merge($list,$plugins) ;
$i=0 ;
foreach ($exceptions as $value) {
$value = Inflector::underscore($value);
$value = strtolower($value) ;
$list[$i]=$value ;
$i++ ;
}
$exceptions=implode('|', $list) ;
Cache::write('exception_url_list',$exceptions) ;
}
Router::connect('/:language/:typeslug',
array('controller' => 'nodetypes', 'action' => 'view'),
array(
'language'=>'[a-z]{3}',
'typeslug' => '(?!('.$exceptions.')((\W+)|$))[a-zA-Z\-_]+/?$',
'pass'=>array('typeslug')
)
);
Router::connect('/:language/:typeslug/:nodeslug',
array('controller' => 'nodes', 'action' => 'view'),
array(
'language'=>'[a-z]{3}',
'typeslug' => '(?!('.$exceptions.')((\W+)|$))[a-zA-Z\-_]+/?$',
'pass'=>array('typeslug','nodeslug')
)
);
первый маршрут работает отлично, но второй маршрут, а не торт, будет искать имя контроллера, совпадающее с префиксом языка!
Подробнее здесь:
https://stackoverflow.com/questions/182 ... -cakephp-2
1719546867
Anonymous
Я ищу способ автоматически избежать взаимодействия между пулями и контроллером/плагином в URL-адресе cakephp. с помощью этой статьи (http://lecterror.com/articles/view/advanced-routing- with-cakephp-one-example) моему файлу Route.php это нравится: [code]$exceptions = Cache::read('exception_url_list'); if ($exceptions===false) { $controllers=App::objects('Controller') ; $plugins=App::objects('plugin'); $i=0 ; foreach ($controllers as $controller) { $list[$i]=str_replace('Controller','',$controller) ; $i++ ; } $exceptions=array_merge($list,$plugins) ; $i=0 ; foreach ($exceptions as $value) { $value = Inflector::underscore($value); $value = strtolower($value) ; $list[$i]=$value ; $i++ ; } $exceptions=implode('|', $list) ; Cache::write('exception_url_list',$exceptions) ; } Router::connect('/:language/:typeslug', array('controller' => 'nodetypes', 'action' => 'view'), array( 'language'=>'[a-z]{3}', 'typeslug' => '(?!('.$exceptions.')((\W+)|$))[a-zA-Z\-_]+/?$', 'pass'=>array('typeslug') ) ); Router::connect('/:language/:typeslug/:nodeslug', array('controller' => 'nodes', 'action' => 'view'), array( 'language'=>'[a-z]{3}', 'typeslug' => '(?!('.$exceptions.')((\W+)|$))[a-zA-Z\-_]+/?$', 'pass'=>array('typeslug','nodeslug') ) ); [/code] первый маршрут работает отлично, но второй маршрут, а не торт, будет искать имя контроллера, совпадающее с префиксом языка! Подробнее здесь: [url]https://stackoverflow.com/questions/18261060/avoiding-interference-between-slugs-and-controller-or-plugin-names-in-cakephp-2[/url]