2011-01-10 18 views
8

Attualmente sto provando a portare una delle mie app catalyst più piccole a Mojolicious (solo per il gusto di farlo).Mojolicious url_for: absolute path

Dire che siamo su una pagina: http://whatever.com/generate. In quella pagina c'è un link per esempio "generato"

Quando si utilizza catalizzatore (con i modelli TT) e si definisce il collegamento come

uri_for 'generated' 

verrà generato un link alla http://whatever.com/generate/generated Ma se si definirla come

uri_for '/generated' 

verrà generato un link alla http://whatever.com/generated

I ho provato a fare lo stesso con Mojolicious 'url_for, ma sembra funzionare diversamente. Non fa una differnece wether chiamo

url_for 'generated' 

o

url_for '/generated' 

entrambe le chiamate generano un collegamento a '/ generate/generato'

Quindi la mia domanda è: come faccio rendi url_for per generare un link ad una rotta assoluta. cioè a '/ generato'

grazie, Gr, ldx

risposta

10

url_for genera URL relativo alla radice app. Ciò è stato fatto per la portabilità: puoi inserire la tua app in qualsiasi URL e i tuoi collegamenti non verranno interrotti.

Se è necessario un collegamento al percorso assoluto, perché è necessario url_for di? È possibile utilizzare solo una stringa '/generated'.

Da altra parte, se si ha realmente bisogno Mojo :: oggetto URL che si può ottenere con

<%= url_for->path('/generated') %> 

url_for quando chiamato senza rendimenti params url corrente

+0

Infatti. Immagino di essere ancora in una mentalità catalista, usando sempre uri_for. Ma hai ragione, non ho bisogno di url_for a tutti :-) – ldx

10

Si può facilmente ottenere un URL assoluto da url_for . Restituisce un oggetto Mojo :: URL, quindi puoi semplicemente utilizzare il metodo to_abs:

$ perl -Mojo -E 'a("/" => sub { $s=shift;$s->render(text=>$s->url_for("/")->to_abs) })->start' get/
http://localhost:13733/