0

Я использую следующий код в моем AppHelper.php, чтобы ввести параметр языка в связь, созданной с HtmlHelperCakePHP не показывать индекс действий в URL

public function url($url = null, $full = false) { 
    if(!isset($url['language']) && isset($this->params['language'])) { 
    $url['language'] = $this->params['language']; 
    } 
    return parent::url($url, $full); 
} 

Это работает нормально, но когда я иду действие индексировать URL становится something.com/some_controller/index

, если я не переопределить метод URL-адрес, то URL просто something.com/some_controller

это мои маршруты

Router::connect('/:language/:controller/:action/*', 
        array(), 
        array('language' => 'eng|fra')); 

Router::connect('/:language/:controller', 
        array('action' => 'index'), 
        array('language' => 'eng|fra')); 

Router::connect('/:language', 
        array('controller' => 'pages', 'action' => 'display'), 
        array('language' => 'eng|fra')); 

Я вызываю метод ссылки, как этот

$this->Html->link(__('Users'), array('controller'=>'users', 'action'=>'index'))';

и я попытался его без параметра действия

$this->Html->link(__('Users'), array('controller'=>'users'))';

без параметра действия, но он добавляет текущее действие если я на странице управляется тем же контроллером

как я могу это сделать так что имя действия не станет частью URL-адреса, если это действие индекса?

ответ

0

Пути сопоставлены в том порядке, в котором вы их устанавливаете. Измените порядок своих операторов Router :: connect(), и все готово. то есть. Сначала задайте маршрут для /: language ', затем для /: language /: controller', а затем /: language /: controller /: action: '

Также переопределить AppHelper :: url(), чтобы включить язык в генерации url. не нужно. Используйте ключ 'persist' в операторах Router :: connect(), и он выполнит эту работу за вас.

+0

Спасибо, что это именно то, что мне нужно! –

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

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