2011-12-24 6 views
10

Sto usando Yii.
se il mio URL è http://localhost/evengee/event/page/id/2/sfn+master/?tab=3 Il mio vero url (percorso file) è solo http://localhost/evengee
Come avrei ottenuto, preferibilmente nella vista:Come ottengo l'url corrente senza parametri in Yii?

  1. URL completo http://localhost/evengee/event/page/id/2/sfn+master/?tab=3
  2. URL senza parametri espliciti http://localhost/evengee/event/page/id/2/sfn+master/

So che posso dividere/esplodere str_replace con il? e usa $ _SERVER. Preferirei usare i metodi nativi Yii.

risposta

17

Per:

  • URL completo (http://localhost/even/page/id/2/?t=3) utilizzare Yii::app()->request->getUrl(),

  • URL senza parametri (http://localhost/even/page/id/2/ uso Yii::app()->request->getPathInfo().

Secondo, l'URL viene fornito senza schema, server e stringa di query. Questo sembra abbastanza buono.

+3

provo 'Yii :: app() -> request-> getUrl()', ma questo non ha restituito il nome di dominio. – GusDeCooL

+0

Utilizzare createAbsoluteUrl se si desidera il nome di dominio completo. '$ this-> createAbsoluteUrl (Yii :: app() -> request-> getUrl());' O 'Yii :: app() -> createAbsoluteUrl (Yii :: app() -> request-> getUrl()); ' –

4

Per ottenere l'URL completo, utilizzare il metodo di CHttpRequest Yii::app()->request->getRequestUrl();

getRequestUrl() È possibile ottenere il controller, il modulo e l'azione nome della pagina corrente dai metodi CApplication Yii::app()->getController()->id; //gets you the controller id

Yii::app()->getController()->getAction()->id; //gets you the action id

Puoi mettere insieme un URL usando la proprietà baseURL di CApplicazione

Yii::app()->baseURL

+4

CHttpRequest e i relativi comportamenti non hanno un metodo o chiusura denominato "getRequestUrl". che dovrebbe essere un 'i' non un 'l' – glyph

+0

Dovrebbe essere Yii :: app() -> request-> getUrl(); –