Могу ли я создать URL-адрес, подобный Google mail, в cake php?

#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, это большой прогресс :-)),

но есть несколько проблем:

  1. когда я пытаюсь получить доступ http://domain.local/a/pte/users (без префиксного элемента, я решил отобразить функцию index), происходит сбой (отображается ошибка, которую AController не определил)
  2. Когда я создаю ссылку

    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 , дайте мне знать, если это поможет.