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

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

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

Ответы [ 3 ]

16 голосов
/ 27 июля 2011

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

4 голосов
/ 27 июля 2011
$this->here

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

2 голосов
/ 24 октября 2014

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