CakePHP - Быстрый способ получить /контроллер/путь действия?

Есть ли свойство контроллера, которое позволит мне получить только /controller/action из URL-адреса без каких-либо дополнительных параметров?

На данный момент я должен присоединиться к $this->name . '/' . $this->action.


person BadHorsie    schedule 27.07.2011    source источник
comment
Для чего тебе это?   -  person deceze♦    schedule 27.07.2011
comment
Чтобы перейти на мою страницу входа в качестве перенаправления   -  person BadHorsie    schedule 27.07.2011


Ответы (3)


Вы не хотите создавать строку /users/login, вам нужен URL-адрес, который соответствует действию входа в систему вашего пользовательского контроллера (например). Это не обязательно то же самое, что и /users/login, и вы не должны жестко кодировать его!

Чтобы получить URL-адрес, который приведет к действию контроллера, используйте обратную маршрутизацию:

Router::url(array('controller' => 'users', 'action' => 'login'));
//or
Router::url(array('controller' => $this->name, 'action' => $this->action));

Да, это еще дольше, но это правильный способ сделать это. Если однажды вы решите, что хотите, чтобы URL-адрес для входа был /login или /members/entrance вместо /users/login, вам нужно только определить соответствующий маршрут в routes.php, не переписывая все жестко запрограммированные ссылки.

person deceze♦    schedule 27.07.2011

$this->here

Доступен в представлении и контроллере. Небольшое примечание: это удаляется в 2.0.

person Dunhamzzz    schedule 27.07.2011
comment
Я думаю, что $here включает любые дополнительные параметры URL. - person BadHorsie; 27.07.2011
comment
@BadHorsie Которые, поскольку вы хотите использовать их для перенаправления входа в систему, я бы сказал, что они довольно актуальны. Если вам просто нужен контроллер и действие, просто присоединяйтесь к контроллеру и действию, как раньше! - person Dunhamzzz; 27.07.2011
comment
Нет, мне не нужны дополнительные параметры. Спасибо, я просто продолжу присоединяться к контроллеру/действию. - person BadHorsie; 27.07.2011

Также можно использовать HtmlHelper::url в версии 2.x.

$this->Html->url(array(
  "controller" => "controller",
  "action" => "action",
  "parameter"
));

Для CakePHP 3.x хорошим выбором будет UrlHelper:

$this->Url->build([
  "controller" => "controller",
  "action" => "action",
  "parameter"
]);

Оба примера производят

/controller/action/parameter
person betatester07    schedule 24.10.2014