2012-08-11 10 views
7

TLDR: Wie kann ich eine URL im Controller erstellen, ähnlich wie ich den HtmlHelper verwenden kann, um URLs in einer Ansicht zu erstellen?So erstellen Sie eine URL in Controller wie HtmlHelper


Problem:

Ich mag die URL einer Controller-Aktion drucken, in meinem Controller (weil ich meinen JSON-String in meinem Controller zu erstellen, nicht in einer Ansicht)

In a View, kann ich $this->Html->url() verwenden, aber was ist mit einem Controller?

Soll ich konstant wie APP_DIR + Controller-Namen + Controller-Aktion?)

Antwort

30

Verwenden Sie die Router-Klasse verwenden, definiert.

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

oder die gleiche Sache, aber in einem gemeinsamen/einfachen Szenario:

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

Hinweis: in Cake2.x, "Artikel" würde klein geschrieben werden.


CakePHP 2.x Router documentation

CakePHP 3.x 'Generating URLs' documentation

+1

dies akzeptiert werden sollte, funktioniert super. (mit CakePHP 2.4.5) – CREE7EN

+1

Denken Sie daran, die Routing-Klasse zu verwenden: 'Verwenden Sie Cake \ Routing \ Router;' –