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

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

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

Ответ 1

Вы не хотите создавать строку /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 без перезаписи всех ваших жестко привязанных ссылок.

Ответ 2

$this->here

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

Ответ 3

Также можно использовать метод 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