#cakephp #routing
#cakephp #маршруты
Вопрос:
Привет, мастер CakePHP! Я хочу кое-что спросить.
Я думаю, что проблема настолько проста, возможно ли сгенерировать URL-адрес в приложении cakephp, подобном этому? (Это URL-адрес, подобный Google mail — http://mail.google.com/a/domain.com)
http://www.domain.com/a/[something]/[member]/[controller]/[action]
Где [something] — динамическая переменная, [member] — префикс, [controller] а [action] — обычный элемент URL cakephp.
итак, я хочу сдвинуть обычный URL CakePHP вправо или вставить / a / something / в начальный URL. Кроме того, [что-то] должно быть прочитано из действия контроллера
спасибо, ваша помощь была бы для меня очень ценной и действительно помогла бы мне
ВОПРОС v2: Я пытался добавить эту маршрутизацию в routes.php
Router::connect('/:code/:something/:controller/:action',
array(),
array('code'=>'a','pass'=>array('something'))
);
когда я пытаюсь получить доступ к http://domain.local/a/pte/users/view это работает, но при попытке доступа отображается ошибка http://domain.local/a/pte/users
ВОПРОС v3:
Итак, простой вопрос:
Как мне получить URL-адрес, подобный Google (пример выше), не нарушая маршрутизацию CakePHP по умолчанию?
ВОПРОС версии 4: (Спасибо за @Rui)
Я пытался создать этот маршрут:
Router::connect('/:code/:something/:prefix/:controller/*',
array(),
array('code'=>'a','pass'=>array('something'))
);
Это нормально, когда я пытаюсь получить доступ
http://domain.local/a/pte/member/users
(Результатом является представление cake render member_index, это большой прогресс :-)),
но есть несколько проблем:
- когда я пытаюсь получить доступ
http://domain.local/a/pte/users
(без префиксного элемента, я решил отобразить функцию index), происходит сбой (отображается ошибка, которую AController не определил) -
Когда я создаю ссылку
echo $html->link(‘тест link’,array(‘code’=>’a’,’something’=>’pte’,’member’=>true,’controller’=>’users’,’action’=>’another_view’));
он генерирует ссылку, подобную этой
http://domain.local/member/users/another_view/code:a/something:pte
Ответ №1:
Пожалуйста, попробуйте в /app/config/routes.php:
<?php
Router::connect('/a/:something/:member/:controller/:action/*');
?>
И действие должно быть:
<?php
public function action($something = null, $member = null) {
/* action code */
}
?>
Надеюсь, это поможет.
Комментарии:
1. Спасибо за ваш ответ.. Я пытался написать этот маршрутизатор маршрутизации::connect(‘/:code/:something/:controller/:action’, array(), array(‘code’=>’a’,’pass’=>array(‘something’))); Но это было просто полезно, когда я писал domain.com/a/test/users/view и отображать ошибку, когда я пишу domain.com/a/test/users
2. Для domain.com/a/test/users , добавьте этот маршрут: Router::connect(‘/a/: something/:member/:controller’, array(‘action’ => ‘view’)); Дайте мне знать, если это поможет, предполагается, что view — это ваше действие по умолчанию в контроллере.
3. Пока это ОТЛИЧНЫЙ Rui! Но когда я пытаюсь получить доступ к domain.local/a/pte/member/users , cake сообщает мне об ошибке: представление действия не определено в контроллере UsersController, не должно было быть member_view, а не просто view, потому что я определил префикс member в ядре
4. Да, cake ищет действие «Просмотр» у пользователей контроллера… вот почему он выдает эту ошибку…..
5. Возможно, то, что вы ищете, — это префиксы маршрутов… пожалуйста, проверьте здесь book.cakephp.org/view/950/Prefix-Routing , дайте мне знать, если это поможет.