Url Parsing

CakePHP utilizza il metodo Controller::url() per interpretare una richiesta di url ed erogarla in modo corretto (ad esempio rispettando il sub-folding di applicazione) ed in generale per perfezionare l'url rewrite.

CakePOWER estende questo metodo fornendo un sistema più ampio di analisi ed interpretazione della stringa. Lo scopo è rendere ogni applicazione il più aperta e configurabile possibile.

Named Url

NamedUrl è un sistema di configurazione che permette di chiamare una determinata url utilizzandone un nome. Il sistema si occupa di trasformare questo nome in una path reale.

// Url normale
$this->Pow->url('/news/index/');
 
// NamedUrl
$this->Pow->url('news');

Il sistema è ovviamente estendibile ed ogni plugin CakePOWER può definire le proprie url.

Nomi Notevoli

I nomi notevoli sono placeholder per alcuni parametri comuni a qualunque richiesta quali:

Placeholder Descrizione
/plug/ Nome del plugin coinvolto nella richiesta
/ctr Nome del plugin coinvolto nella richiesta
/act Nome dell'azione coinvolta nella richiesta
/self Ripetizione dell'url della richiesta in corso
/query Querystring della richiesta in corso (sperimentale)

Un esempio di chiamata utilizzando questi parametri può essere:

// La richiesta risponde all'url:
// "/it/pizza_plugin/orders/add?name=margherita&qt=3"
 
$this->Pow->url('/self/');
$this->Pow->url('/plug/ctr/index/');
$this->Pow->url('/plug/ctr/act?/query');

Variabili di Controller

Il metodo PowComponent::url rende possibile accedere alle proprietà stesse definite a livello di controller:

if ( $this->Model->save($this->data) ) {
  $this->redirect("/ctr/view/{@ctr:Model.id}/");
}

Variabili DAC

E' possibile utilizzare una qualsiasi path DAC come placeholder di una url richiesta:

$this->Pow->url('/ctr/view/{@tmp.lastInsertId}/');

Se la path richiesta non esiste o è vuota il parametro viene completamente ignorato. E' quindi utile utilizzare la tecnica dei parametri nominali (name:value).

Variabili Esplicite

Le variabili esplicite sono formate dalle chiavi di un array DAC che può essere popolato prima di chiamare un comando di url.

L'array utilizzato è “tmp.url” ed è possibile utilizzarlo in svariati modi.

// Redirect configurabile dopo un salvataggio:
JC::write('tmp.url.id',$this->Model->getLastInsertId());
$this->redirect('/ctr/view/{@id}');

Prima di interpretare gli eventuali placeholders presenti nella path con le chiavi dell'array DAC quest'ultimo viene esteso con le eventuali variabili passate attraverso la configurazione del metodo stesso:

$this->Pow->url('/ctr/view/{@id}',array(
  'vars' => array(
    'id' => $this->Model->getLastInsertId()
  )
));

NOTA: questa tecnica è molto utile se si utilizza una configurazione DAC come path per una url.

Vengono inoltre utilizzati parametri nominali di url di CakePHP per popolare DAC{tmp.url}:

// Richiesta in corso:
// "/users/view/name:marco/surname:pegoraro"
$this->redirect('/users/edit/{@name}/{@surname}');

Anche i paretri non nominali possono essere utilizzati:

// Richiesta in corso:
// "/users/view/marco/pegoraro"
$this->redirect('/users/edit/{@p1}/{@p2}');
 
/home/juniorcm/public_html/wiki/data/pages/cakepower/url.txt · Ultima modifica: 09/05/2009 09:42 da peg
 
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki