如何在控制器中创建一个URL,如HtmlHelper

mrd*_*iri 8 cakephp html-helper cakephp-2.x cakephp-3.x

TLDR:我如何在Controller中创建一个URL,类似于如何使用HtmlHelper在视图中创建URL?


问题:

我想在我的控制器中打印一个控制器动作的url(因为我在我的控制器中创建了我的JSON字符串,而不是在视图中)

在一个View,我可以使用$this->Html->url(),但在控制器呢?

我应该使用定义的常量如APP_DIR+ Controller name + Controller action吗?)

Dav*_*ave 34

使用Router类.

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

或者相同的事情,但在更常见/简单的情况下:

$url = Router::url(['controller' => 'Articles', 'action' => 'index']);
Run Code Online (Sandbox Code Playgroud)

注意:在Cake2.x中,"Articles"将为小写.


CakePHP 2.x路由器文档

CakePHP 3.x'生成URL'文档

  • 记得使用路由类:`使用Cake\Routing\Router;` (2认同)