Есть ли свойство контроллера, которое позволит мне получить только /controller/action
из URL-адреса без каких-либо дополнительных параметров?
На данный момент я должен присоединиться к $this->name . '/' . $this->action
.
Есть ли свойство контроллера, которое позволит мне получить только /controller/action
из URL-адреса без каких-либо дополнительных параметров?
На данный момент я должен присоединиться к $this->name . '/' . $this->action
.
Вы не хотите создавать строку /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
, не переписывая все жестко запрограммированные ссылки.
$this->here
Доступен в представлении и контроллере. Небольшое примечание: это удаляется в 2.0.
$here
включает любые дополнительные параметры URL.
- 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