How do you echo out current URL in Cake's view?
How do you echo out current URL in Cake's view?
I know this post is a little dated, and CakePHP versions have flourished since. In the current (2.1.x) version of CakePHP and even in 1.3.x if I am not mistaken, one can get the current controller/view url like this:
$this->params['url'];
While this method does NOT return the parameters, it is handy if you want to append parameters to a link when building new URL's. For example, we have the current URL:
projects/edit/6
And we want to append a custom parameter action called c_action with a value of remove_image, one could make use of $this->params['url]; and merge it with an array of custom parameter key => value pairs:
echo $this->Html->link('remove image', array_merge($this->params['url'], array('c_action' => 'remove_image'));
Using the above method we are able to append our custom parameters to the link and not cause a long chain on parameters to build up on the URL, because $this->params['url] only ever returns the controll action URL.
In the above example we'd need to manually add the ID of 6 back into the URL, so perahaps the final link build would be like this:
echo $this->Html->link('remove image', array_merge($this->params['url'], array($id,'c_action' => 'remove_image'));
Where $is is a the ID of the project and you would have assigned it to the variable $id at controller level. The new URL will then be:
projects/edit/6/c_action:remove_image
Sorry if this is in the slightest unrelated, but I ran across this question when searching for a method to achieve the above and thought others may benefit from it.
After a few research, I got this as perfect Full URL for CakePHP 3.*
$this->request->getUri();
the Full URL will be something like this
More info you can read here: https://pritomkumar.blogspot.com/2017/04/how-to-get-complete-current-url-for.html
In CakePHP 3 $this->here will be deprecated. The actual way is using this method:
Router::url($this->request->getRequestTarget())
For CakePHP 4.*
echo $this->Html->link(
'Dashboard',
['controller' => 'Dashboards', 'action' => 'index', '_full' => true]
);
If you want to return the base path, you can check that the Router class is using Configure::read ('App.fullBaseUrl'). So if you are a fan of hexagonal architecture, you can create a Cake implementation for creating URLs that will only use Configure from all CakePHP framework.