<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luizz &#187; CakePHP</title>
	<atom:link href="http://www.luizz.it/tag/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.luizz.it</link>
	<description>Appunti di lavoro per lo sviluppo di applicazioni WEB con CakePHP</description>
	<lastBuildDate>Thu, 09 Sep 2010 10:39:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>poEdit e i file .ctp</title>
		<link>http://www.luizz.it/119/cakephp/poedit-e-i-file-ctp</link>
		<comments>http://www.luizz.it/119/cakephp/poedit-e-i-file-ctp#comments</comments>
		<pubDate>Mon, 16 Feb 2009 08:32:37 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[poedit]]></category>

		<guid isPermaLink="false">http://www.luizz.it/?p=119</guid>
		<description><![CDATA[Se si tenta di utilizzare poEdit per la traduzione di file con estensione .ctp inizialmente si ottiene un messaggio del tipo: &#8220;Poedit non ha trovato alcun file nelle directory analizzate&#8221; Se si va in File > Preferenze > Parser e si modifica PHP si può aggiungere una estensione e si avrà una lista del tipo [...]]]></description>
			<content:encoded><![CDATA[<p>Se si tenta di utilizzare poEdit per la traduzione di file con estensione .ctp inizialmente si ottiene un messaggio del tipo:<br />
&#8220;Poedit non ha trovato alcun file nelle directory analizzate&#8221;<br />
Se si va in File > Preferenze > Parser e si modifica PHP si può aggiungere una estensione e si avrà una lista del tipo<br />
&#8220;*.php;*.ctp&#8221;<br />
Ma questo non basta perchè si otterrebbe un messaggio del tipo:<br />
&#8220;xgettext: warning:file `users/login&#8217; extension `ctp&#8217; is unknown;will try C&#8221;</p>
<p>Per far processare correttamente i file .ctp da poEdit è sufficente aggiungere una riga nel comando del parser.</p>
<ol>
<li>Aprire le preferenze di poEdit </li>
<li>Selezionare Parsers e scegliere PHP</li>
<li>Modificare il setup del parser PHP e alla fine del comando del parser aggiungere:
<pre>--language=php</pre>
</li>
</ol>
<p>Riavviare il programma</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/119/cakephp/poedit-e-i-file-ctp/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>FormHelper: creare una select automagicamente</title>
		<link>http://www.luizz.it/79/cakephp/formhelper-creare-una-select-automagicamente</link>
		<comments>http://www.luizz.it/79/cakephp/formhelper-creare-una-select-automagicamente#comments</comments>
		<pubDate>Wed, 06 Feb 2008 10:15:37 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[formhelper]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://www.luizz.it/79/cakephp/formhelper-creare-una-select-automagicamente</guid>
		<description><![CDATA[Per creare una select è sufficente assegnare nel controller l'elenco dei valori ad una variabile con il giusto nome affinchè nel form venga automaticamente inserita nelle options.]]></description>
			<content:encoded><![CDATA[<p>Nella creazione di un form con l&#8217;helper è sufficente assegnare il giusto nome ad una variabile affinchè venga utilizzata come <em>options</em> in una <em>select</em>, senza dover specificare altri parametri. Mi spiego con un esempio.</p>
<p>Devo gestire dei gruppi di utenti con la possibilità di avere dei sotto-gruppi, quindi ho il model Group che agisce come un albero (beahvior Tree) e in fase di inserimento devo specificare il gruppo parent, popolando il campo parent_id con l&#8217;id del gruppo padre.<br />
Il form di inserimento deve quindi contenere una select da dove poter scegliere il gruppo padre.</p>
<p><strong>Controller: groups_controller</strong><br />
<code>$groups = $this->Group->findAll(null,'id,groupname','groupname ASC',null,null,-1);<br />
$groups = Set::combine($groups, "{n}.Group.id","{n}.Group.groupname");<br />
$this->set('parents',$groups);</code><br />
Nel controller ho ricavato l&#8217;elenco dei gruppi e lo assegno alla variabile &#8216;parents&#8217;. <strong>Questo è il passaggio determinante.</strong></p>
<p><strong>View: add.ctp</strong><br />
<code><?php echo $form->input('Group.parent_id', array('label'=>false));?></code></p>
<p>La chiave di questo comportamento è l&#8217;assegnazione del giusto nome alla variabile che contiene le options, ovvero deve essere un nome che risponde alle regole delle inflessioni di CakePHP, infatti il nome della variabile giusto è definito dalla seguente espressione</p>
<p><code>$varName = Inflector::variable(Inflector::pluralize(preg_replace('/_id$/', '', $this->field())));</code></p>
<p>Ma poichè sto utilizzando un TreeBehavior è sicuramente conveniente avere una select organizzata appunto come un albero sfruttando la funzione</p>
<p><code>$groups = $this->Group->generatetreelist (null,"{n}.Group.id","{n}.Group.groupname",'-- ');</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/79/cakephp/formhelper-creare-una-select-automagicamente/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auth Component: pieno controllo dell’autenticazione</title>
		<link>http://www.luizz.it/75/cakephp/auth-component-pieno-controllo-dellautenticazione</link>
		<comments>http://www.luizz.it/75/cakephp/auth-component-pieno-controllo-dellautenticazione#comments</comments>
		<pubDate>Fri, 25 Jan 2008 10:30:09 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[passo passo]]></category>

		<guid isPermaLink="false">http://www.luizz.it/75/cakephp/auth-component-pieno-controllo-dellautenticazione</guid>
		<description><![CDATA[Come visto negli appunti precedenti, con la semplice attivazione il componente ha dei comportamenti predefiniti durante la fase di autenticazione che potrebbe essere necessario cambiare.
Inoltre vengono messi a disposizione metodi e attributi utili in varie circostanze, oltre che per la gestione dei permessi.]]></description>
			<content:encoded><![CDATA[<p>Come visto negli appunti precedenti, con la semplice attivazione il componente ha dei comportamenti predefiniti durante la fase di autenticazione che potrebbe essere necessario cambiare.<br />
Inoltre vengono messi a disposizione metodi e proprietà utili, oltre che per la gestione dei permessi, in varie occasioni.</p>
<p><strong>Personalizzare l&#8217;autenticazione</strong><br />
Impostando alcuni attributi, si determinano i comportamenti del componente.<br />
Di seguito riporto la descrizione di alcune impostazioni di interesse legate all&#8217;autenticazione.</p>
<p><code>$autoRedirect = true</code><br />
Determina se dopo l&#8217;avvenuta autenticazione AuthComponent redireziona automaticamente alla pagina cercata o no.</p>
<p><code>$fields = array('username' => 'username', 'password' => 'password')</code><br />
Permette di specificare il nome dei campi usati nell&#8217;$userModel diversi da quelli di default necessari all&#8217;identificazione.<br />
Ad esempio: array(&#8216;username&#8217; => &#8216;login_name&#8217;, &#8216;password&#8217; => &#8216;passwd&#8217;).</p>
<p><code>$loginError = null</code><br />
Si può impostare il messaggio di errore che viene utilizzato per comunicare la mancata corrispondenza di userid e password.<br />
Questo è l&#8217;unico messaggio che viene visualizzato per una questione di sicurezza, così non vengono fornite indicazioni circa l&#8217;errore di autenticazione occorso.<br />
Il messaggio qui impostato non viene visualizzato automaticamente nella session Flash, ma deve essere impostato nella view nel seguente modo<br />
<strong>if ($session->check(&#8216;Message.auth&#8217;)) $session->flash(&#8216;auth&#8217;); </strong></p>
<p><code>$authError = null</code><br />
Messaggio di errore che appare quando si tenta di accedere a un&#8217;area per la quale è richiesta l&#8217;autenticazione.</p>
<p><code>$loginRedirect = null</code><br />
Quando si richiede l&#8217;accesso a una pagina e si viene ridirezionati alla pagina di login $loginAction, dopo l&#8217;autenticazione l&#8217;utente viene rimandato alla pagina inizialmente richiesta, senza doverla richiedere nuovamente dopo il login.<br />
Se $loginAction non è impostata, l&#8217;utente viene ridirezionato alla pagina specificata in $loginRedirect</p>
<p><code>$logoutRedirect = null</code><br />
L&#8217;azione di defautl alla quale viene ridiretto l&#8217;utente dopo il logout. L&#8217;URL del redirect viene fornita da AuthComponent::logout() che di default restituisce $loginAction.</p>
<p><code>$loginAction = null</code><br />
E&#8217; una stringa o un array che definisce l&#8217;URL per la richiesta di login.<br />
Se non impostata, AuthComponent la imposta come (pluralize) $userModel / login , a meno che non venga impostata $loginRedirect </p>
<p><code>$userModel = 'User'</code><br />
Il nome del Model utilizzato per eseguire l&#8217;autenticazione degli utenti, ovvero l&#8217;oggetto che detiene username e password degli utenti. Come visto, il valore di default è il model User.</p>
<p><code>$userScope = array()</code><br />
Si possono aggiungere delle condizioni aggiuntive per la verifica dell&#8217;utente.<br />
Ad esempio se si vuole permettere l&#8217;accesso ai soli utenti che abbiano il campo &#8220;attivato&#8221; abilitato allora si può definire  array(&#8216;User.attivato&#8217; => 1). In questo modo, anche se l&#8217;utente inserisce la giusta userid e password gli verrà permesso l&#8217;accesso solo se il suo stato è &#8220;attivato&#8221;.</p>
<p><code>$sessionKey = null</code><br />
Definisce il nome della chiave di sessione che contiene i dati sull&#8217;utente autenticato.<br />
Se non è specificato il valore di default è &#8220;Auth.{$userModel}&#8221;.</p>
<p>Queste impostazioni devono essere definite nel controller</p>
<pre><code>function beforeFilter(){
		$this->Auth->authError = "Per accedere alla pagina richiesta bisogna autenticarsi";
		$this->Auth->loginError = 'Tentativo di accesso fallito. Controllare username e password.';
	}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/75/cakephp/auth-component-pieno-controllo-dellautenticazione/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Auth Component: creare un utente, eseguire il login e il logout</title>
		<link>http://www.luizz.it/74/cakephp/auth-component-creare-un-utente-eseguire-il-login-e-il-logout</link>
		<comments>http://www.luizz.it/74/cakephp/auth-component-creare-un-utente-eseguire-il-login-e-il-logout#comments</comments>
		<pubDate>Wed, 23 Jan 2008 12:56:09 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[passo passo]]></category>

		<guid isPermaLink="false">http://www.luizz.it/74/cakephp/auth-component-creare-un-utente-eseguire-il-login-e-il-logout</guid>
		<description><![CDATA[Seconda parte del tutorial: Una volta attivato il component, creata la tabella degli utenti e la maschera per il login, è il momento di creare un utente per verificare il corretto funzionamento dell'autenticazione. Ecco due modi di farlo.]]></description>
			<content:encoded><![CDATA[<p>Una volta attivato il component, creata la tabella degli utenti e la maschera per il login, è il momento di creare un utente per verificare il corretto funzionamento dell&#8217;autenticazione. Ecco due modi di farlo.</p>
<p><strong>Inserimento manuale nella tabella users</strong></p>
<p>Posso inserire i dati nella tabella attraverso il client MySQL o un altro tool grafico (io uso <a href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">phpMyAdmin</a> ) tenendo presente che la password deve essere converita con la funzione hash utilizzata da Cake, la seguente:</p>
<p><em>hashpwd = sha1 ( salt + plain_password )</em></p>
<p>dove <em>salt </em>è la stringa di sicurezza configurata durante l&#8217;installazione di CakePHP presente nel file \app\config\core.php.<br />
sha1 è l&#8217;algoritmo utilizzato per default da Cake per la funzione hash, ma è possibile cambiare metodo con MD5 e SHA256</p>
<p><strong>Gestione utenti</strong></p>
<p>Creo una gestione completa degli utenti sulla tabella <em>users</em> usando il <a href="http://tempdocs.cakephp.org/#TOC112251" target="_blank">bake da riga di comando</a>  così da poter inserire il primo utente.<br />
A questo punto, seguendo il naming canonico, accedo alla mia gestione degli utenti http://mywebspace/users/ e&#8230;. vengo rimandato alla pagina di login !!<br />
Per accedere, almeno temporaneamente alle azioni di users, si interviene su app_controller.php, dove avevamo attivato $authComponent e si inserisce </p>
<pre><code>
function beforeFilter()	{
     $this->Auth->allow();
}</code></pre>
<p>A questo punto cake concede l&#8217;accesso a qualsiasi azione e possiamo andare a creare l&#8217;utente che ci interessa.<br />
Finito l&#8217;inserimento, rimuoviamo la riga con il metodo allow() e proviamo a d accedere di nuovo a http://mywebspace/users/.<br />
Ci dovrebbe chiedere nuovamente la userdi &#8211; password, ma questa volta si può inserire l&#8217;utente inserito e accedere alla sezione della gestione utenti.</p>
<p>Da notare due cose: quando inserisce ad esempio l&#8217;URL http://mywebspace/articles/view/234 l&#8217;utente viene rimandato a http://mywebspace/users/login e dopo aver effettuato il login, viene reindirizzato sull&#8217;URL da lui richiesta in precedenza.<br />
L&#8217;altra cosa da notare è che sulla password immessa in fase di inserimento utente, viene automaticamente eseguito l&#8217;hash prima del salvataggio in tabella, senza bisogno di aggiungere alcun codice nel controller, nel model o altrove.</p>
<p><strong>Il log out</strong><br />
Per chiudere la sessione è sufficente creare un&#8217;action nel controller nel quale invocare il metodo logout di Auth</p>
<pre><code>function logout(){
		$this->Session->setFlash("L\'utente è uscito regolarmente!");
		$this->redirect($this->Auth->logout());
	}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/74/cakephp/auth-component-creare-un-utente-eseguire-il-login-e-il-logout/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auth Component: attivazione e quickstart</title>
		<link>http://www.luizz.it/70/cakephp/auth-component</link>
		<comments>http://www.luizz.it/70/cakephp/auth-component#comments</comments>
		<pubDate>Fri, 18 Jan 2008 11:10:09 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[autenticazione]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[passo passo]]></category>

		<guid isPermaLink="false">http://www.luizz.it/70/cakephp/auth-component</guid>
		<description><![CDATA[Tutorial per attivare il componente Auth in cakePHP, il sistema nativo per l'autenticazione degli utenti.]]></description>
			<content:encoded><![CDATA[<p><strong>Attivazione del component Auth</strong></p>
<p>Ho appena installato CakePHP e configurato il database completamente vuoto.<br />
Mi appare la <a href="http://www.luizz.it/wp-content/uploads/2008/01/startpage.gif" title="Pagina iniziale di CakePHP dopo l’installazione">pagina iniziale di Cake, </a>con le indicazioni canoniche.</p>
<p>Creo il file <em>/app/app_controller.php</em> e dichiaro come componente <em>Auth</em></p>
<pre><code>class AppController extends Controller {
	var $components = array('Auth');
}</code></pre>
<p>Il component è subito attivato e ricaricando la pagina si ottiene un errore perchè si è stati reindirizzati all&#8217;URL <em>/users/login</em>.<br />
In pratica essendo attivato in ogni pagina richiesta, il sistema riconosce che l&#8217;utente non è autenticato e considera necessaria l&#8217;autenticazione per accedere a qualsiasi pagina del sito.<br />
Quindi avviene il reindirizzamento verso l&#8217;indirizzo di default <em>/users/login</em> per far si che l&#8217;utente si possa autenticare.</p>
<p>Chiaramente si riceve un messaggio di errore se la pagina ancora non esiste, ovvero il controller e la view relativa.</p>
<p><strong>La struttura necessaria</strong></p>
<p>Servono quindi:</p>
<ul>
<li>un <strong>model </strong>che permetta di conservare e confrontare i dati dell&#8217;utente per l&#8217;accesso (userid e password)</li>
<li>un <strong>controller </strong>per le azioni relative all&#8217;utente (login, logout)</li>
<li>una <strong>view </strong>per il form di autenticazione</li>
</ul>
<p><strong>La tabella</strong></p>
<pre><code>CREATE TABLE IF NOT EXISTS `users` (
  `id` int(5) unsigned NOT NULL,
  `username` varchar(30) NOT NULL,
  `password` varchar(30) NOT NULL,
  `nome` varchar(60) NOT NULL,
  `cognome` varchar(100) NOT NULL,
  `active` tinyint(1) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;</code></pre>
<p>Gli unici campi essenziali sono username e password. Si possono utilizzare anche nomi diversi per questi campi, purchè si impostino correttamente nel component (vedi sotto).</p>
<p><strong>Il model</strong></p>
<pre><code>class User extends AppModel {
	var $name = 'User';
}</code></pre>
<p><strong>Il controller</strong></p>
<pre><code>class UsersController extends AppController {

	var $name = 'Users';
	var $helpers = array('Html', 'Form' );

	function login(){
	}
}</code></pre>
<p><strong>Il view (login.ctp)</strong></p>
<pre><code>
<p class="login">
check('Auth.login')) $session->flash('Auth.login'); ?>
<h2>Login</h2>

create('User', array('action' =&gt; 'login'));?&gt;
        input('username');?&gt;
        input('password');?&gt;
        submit('Login');?&gt;
    end(); ?&gt;</code></pre>
<p>A questo punto, accedendo a qualsiasi pagina dell&#8217;applicazione, Cake intercetta la richiesta e prima di soddisfarla, controlla che l&#8217;utente sia autenticato.<br />
In caso negativo esegue un redirect sulla pagina di login.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/70/cakephp/auth-component/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AJAX semplice semplice</title>
		<link>http://www.luizz.it/56/cakephp/ajax-semplice-semplice</link>
		<comments>http://www.luizz.it/56/cakephp/ajax-semplice-semplice#comments</comments>
		<pubDate>Thu, 10 Jan 2008 09:55:40 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://luizz/?p=56</guid>
		<description><![CDATA[Semplici concetti per usare AJAX con CakePHP]]></description>
			<content:encoded><![CDATA[<p>Si vuole creare una pagina dove è presente un link e un DIV con funzioni da contenitore.<br />
Si vuole che alla selezione del link il DIV venga popolato con una lista di elementi, ricavati da un database, sfruttando AJAX, quindi senza ricaricare l&#8217;intera pagina.</p>
<p><strong>Requisiti necessari</strong></p>
<p>Sul server devono essere installate le librerie Javascript <strong>prototype </strong> e <strong>scriptaculous</strong> e devono essere richiamate nella pagina. Inoltre il charset deve essere impostato a &#8220;UTF-8&#8243;.</p>
<p><strong>Il controller</strong></p>
<p>Nel controller devono essere richiamati gli helper necessari: Html, Javascript e Ajax.<br />
Richiamando anche il component &#8220;RequestHandler&#8221; si potranno sfruttare funzionalità circa il rendering di layouts e template.<br />
Il metodo index() imposterà la variabile che sarà stampata inizialmente nel contenitore.<br />
Il metodo listcat() (o qualsivoglia nome) ricaverà la lista da stampare (in questo caso una lista di categorie).</p>
<p><strong>Le view</strong></p>
<p><em>index.ctp</em> conterrà l&#8217;intera pagina corredata dei vari elementi necessari quali il titolo o menu, ecc. oltre al necessario contenitore DIV che verrà aggiornato con l&#8217;inserimento dei dati ricavati.</p>
<p><em>listcat.ctp</em> invece conterrà la sola lista da stampare poichè <strong>rappresenta il contenuto che verrà inserito nel contenitore DIV</strong>.</p>
<p>Quindi è necessario ricordare che il sistema aggiornerà l&#8217;oggetto DOM con ciò che viene prodotto dalla view che l&#8217;action richiamata (listcat) ha prodotto.</p>
<p>Di seguito il codice di esempio.</p>
<p><strong>Controller</strong></p>
<pre><code><?php
class TestsController extends AppController
{
    var $uses = array('Category');
    var $components = array ('RequestHandler');
    var $helpers = array('Html','Javascript','Ajax');

    function index(){
$this->set("lista","Vuoto");
    }

    function listacat(){
$this->set('lista',$this->Category->findAll());
    }
}
?></code></pre>
<p><strong>Da aggiungere al Layout</strong><br />
<code><?php print $html->charsetTag('UTF-8') ?><br />
<?php print $javascript->link('prototype') ?><br />
<?php print $javascript->link('scriptaculous.js?load=effects') ?></code></p>
<p><strong>View &#8211; listacat.ctp</strong><br />
<code>
<ul>
<pre><?php
foreach ($lista as $cat){
    echo "
<li>{$cat['Category']['nome']}</li>

";
}
?></ul>

</code></pre>
<p><strong>View - index.ctp</strong></p>
<pre><code>
<h2>Tests</h2>

<?php echo $ajax->link("Prova AJAX", "/tests/listacat",array("update" => "content")); ?>
<div id="content" style="border: 1px solid #ccc; margin:10px; padding:10px;">
     <?php if(isset($lista)) echo $lista; ?>
</div>

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/56/cakephp/ajax-semplice-semplice/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pagination nella versione 1.2</title>
		<link>http://www.luizz.it/54/cakephp/pagination-nella-versione-12</link>
		<comments>http://www.luizz.it/54/cakephp/pagination-nella-versione-12#comments</comments>
		<pubDate>Fri, 23 Mar 2007 08:20:42 +0000</pubDate>
		<dc:creator>Luizz</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[paginazione]]></category>

		<guid isPermaLink="false">http://luizz/?p=54</guid>
		<description><![CDATA[Nella versione alpha è già presente l'helper per la paginazione delle liste.  ]]></description>
			<content:encoded><![CDATA[<p><strong>Controller</strong></p>
<p>Nel controller va definita la proprietà</p>
<p><code>var $paginate</code><br />
alla quale vengono assegnati dei valori in un array che definiscono lo stato iniziale della lista.<br />
I parametri che si possono assegnare a $paginate sono quelli necessari ad eseguire il metodo findAll:</p>
<ul>
<li>conditions</li>
<li>fields</li>
<li>order </li>
<li>limit</li>
<li>page</li>
<li>recursive</li>
</ul>
<p>Il metodo del controller paginate() restituisce un array in stile risultato query del modello.<br />
I parametri che si possono passare a paginate sono:</p>
<p><strong>mixed $object</strong><br />
E&#8217; usato nel caso in cui un controller usa più di un model e si vuole effettuare la paginazione per il modello che non è quello di default.<br />
Se $object è un array, viene interpretato come $scope, poichè per default $object non è richiesto.</p>
<p><strong>mixed $scope</strong><br />
Sono i criteri per impostare il filtro sui dati.</p>
<p><strong>array $whitelist</strong><br />
Rappresenta la lista dei parametri per la paginazione per i quali l&#8217;utente ha il permesso di passarli attraverso l&#8217;url</p>
<p><strong>$options</strong><br />
E&#8217; un array che continenele relativi ai link per la paginazione<br />
I valori che si possono specificare sono ($options['valore'])</p>
<p><strong>sort</strong> = the key that the recordset is sorted.<br />
<strong>direction</strong> = Direction of the sorting (default: &#8216;asc&#8217;).<br />
<strong>format</strong> = Formato del contatore.<br />
I formati supportati sono &#8216;range&#8217;, che visualizza l&#8217;intervallo dei record visualizzati sul totale e<br />
&#8216;pages&#8217; che visualizza la pagina visualizzata sul totale.<br />
Se si passa una stringa, questa viene analizzata e vengono sostituite le costanti seguenti con i rispettivi valori:  %page%, %pages%, %current%, %count%, %start%, %end% .</p>
<p><strong>separator</strong> = The separator of the actual page and number of pages (default: &#8216; of &#8216;).<br />
<strong>url</strong> = Url of the action. See Router::url().</p>
<p><strong>model</strong> = The name of the model.<br />
<strong>escape</strong> = Defines if the title field for the link should be escaped (default: true).<br />
<strong>update </strong>= DOM id of the element updated with the results of the AJAX call. If this key isn&#8217;t specified Paginator will use plain HTML links.<br />
<strong>indicator</strong> = DOM id of the element that will be shown when doing AJAX requests.</p>
<p><strong>$paginator->link();</strong></p>
<p>$paginator->link($title, $url = array(), $options = array());</p>
<p>$title = è obbligatorio ed è il testo che appare come link<br />
$url = è nel formato array(&#8216;page&#8217;=>&#8217;2&#8242;);<br />
Restituisce il link alla pagina nel giusto formato<br />
$options = le opzioni di visualizzazione</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizz.it/54/cakephp/pagination-nella-versione-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
