10

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?)

1 Answer 1

37

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

Sign up to request clarification or add additional context in comments.

1 Comment

Remember to use the routing class: use Cake\Routing\Router;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.