Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Create a URL in Controller like HtmlHelper

TLDR: How can I create a URL in the Controller similar to how I can use the HtmlHelper to create URLs in a View?


Problem:

I want to print the url of a controller action, in my controller (because I create my JSON string in my controller, not in a view)

In a View, I can use $this->Html->url(), but what about in a Controller?

Should I use defined constant like APP_DIR + Controller name + Controller action?)

like image 651
mrdaliri Avatar asked Aug 11 '12 14:08

mrdaliri


1 Answers

Use the Router class.

$url = Router::url([
    'controller' => 'Articles',
    'action' => 'index',
    '?' => ['page' => 1],
    '#' => 'top'
]);

or the same thing, but in a more common/simple scenario:

$url = Router::url(['controller' => 'Articles', 'action' => 'index']);

Note: in Cake2.x, "Articles" would be lowercase.


CakePHP 2.x Router documentation

CakePHP 3.x 'Generating URLs' documentation

like image 58
Dave Avatar answered Oct 28 '22 01:10

Dave