Is there a Controller property that will allow me to get just /controller/action
from the URL without any additional parameters there might be?
At the moment I am having to join $this->name . '/' . $this->action
.
Is there a Controller property that will allow me to get just /controller/action
from the URL without any additional parameters there might be?
At the moment I am having to join $this->name . '/' . $this->action
.
You don't want to construct the string /users/login
, you want the URL that corresponds to the login action of your users controller (for example). That is not necessarily the same as /users/login
, and you should not hardcode it!
To get a URL that will lead to a controller action, use reverse routing:
Router::url(array('controller' => 'users', 'action' => 'login'));
//or
Router::url(array('controller' => $this->name, 'action' => $this->action));
Yes, that's even longer, but it's the correct way to do it. If one day you decide you want the login URL to be /login
or /members/entrance
instead of /users/login
, you only need to define an appropriate route in routes.php
without rewriting all your hardcoded links.
$this->here
Available in view and controller. Minor note: It's getting removed in 2.0.
$here
includes any additional URL parameters. –
Broz It is also possible to use HtmlHelper::url method in 2.x.
$this->Html->url(array(
"controller" => "controller",
"action" => "action",
"parameter"
));
For CakePHP 3.x, UrlHelper is a good choice:
$this->Url->build([
"controller" => "controller",
"action" => "action",
"parameter"
]);
Both examples produce
/controller/action/parameter
© 2022 - 2024 — McMap. All rights reserved.