<?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>Idea Factory &#187; CakePHP</title>
	<atom:link href="http://ideafactory.it/category/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>http://ideafactory.it</link>
	<description>c&#039;e&#039; solo un modo di fare le cose: farle bene</description>
	<lastBuildDate>Thu, 01 Jul 2010 15:06:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>jMyCake on Bakery</title>
		<link>http://ideafactory.it/cakephp/jmycake-on-bakery.html</link>
		<comments>http://ideafactory.it/cakephp/jmycake-on-bakery.html#comments</comments>
		<pubDate>Fri, 28 Mar 2008 09:37:20 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[helper]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/2008/03/28/jmycake-on-bakery/</guid>
		<description><![CDATA[Ieri sera, mentre controllavo le visite con Google Analytics, ho visto che hanno raggiunto IdeaFactory, in cerca del jQuery Autocomplete Helper, da CakePHP.jp e spulciando il sito ho trovato questo: Quindi: THANKS TO CAKEPHP.JP!!! Preso dell&#8217;entusiamo ho pubblicato il mio helper su Bakery che è un reposity di guide, tutorial e codice a cui tutti [...]]]></description>
			<content:encoded><![CDATA[<p>Ieri sera, mentre controllavo le visite con <a href="http://www.google.com/analytics/" onclick="pageTracker._trackPageview('/outgoing/www.google.com/analytics/?referer=');">Google Analytics</a>, ho visto che hanno raggiunto <a href="http://www.ideafactory.it" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it?referer=');">IdeaFactory</a>, in cerca del <a href="http://www.ideafactory.it/2008/03/26/cakephp-jquery-autocomplete-helper/" onclick="pageTracker._trackPageview('/outgoing/www.ideafactory.it/2008/03/26/cakephp-jquery-autocomplete-helper/?referer=');">jQuery Autocomplete Helper</a>, da <a href="http://cakephp.jp" onclick="pageTracker._trackPageview('/outgoing/cakephp.jp?referer=');">CakePHP.jp</a> e spulciando il sito ho trovato <a href="http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1063&amp;forum=12&amp;post_id=2138#forumpost2138" onclick="pageTracker._trackPageview('/outgoing/cakephp.jp/modules/newbb/viewtopic.php?topic_id=1063_amp_forum=12_amp_post_id=2138_forumpost2138&amp;referer=');">questo</a>:</p>
<p><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/jp.png" title="From CakePHP.jp" rel="lightbox[62]" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/jp.png?referer=');"></a></p>
<p style="text-align: center"><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/jp.png" title="From CakePHP.jp" rel="lightbox[62]" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/jp.png?referer=');"><img src="http://192.168.1.7/blog/wp-content/uploads/2008/03/jp.png" alt="From CakePHP.jp" border="1" height="247" hspace="3" vspace="3" width="547" /></a></p>
<p>Quindi: <strong>THANKS TO CAKEPHP.JP!!!</strong> <img src='http://ideafactory.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Preso dell&#8217;entusiamo ho pubblicato il mio helper su <a href="http://bakery.cakephp.org" onclick="pageTracker._trackPageview('/outgoing/bakery.cakephp.org?referer=');">Bakery</a> che è un reposity di guide, tutorial e codice a cui tutti gli appassionati di <a href="http://www.cakephp.org" onclick="pageTracker._trackPageview('/outgoing/www.cakephp.org?referer=');">CakePHP</a> possono contribuire.</p>
<p>Spero che il mio articolo venga accettato dai moderatori, se così fosse sarà raggiungibile <a href="http://bakery.cakephp.org/articles/view/jquery-autocomplete-helper" onclick="pageTracker._trackPageview('/outgoing/bakery.cakephp.org/articles/view/jquery-autocomplete-helper?referer=');">qui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/cakephp/jmycake-on-bakery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP JQuery autocomplete Helper</title>
		<link>http://ideafactory.it/cakephp/cakephp-jquery-autocomplete-helper.html</link>
		<comments>http://ideafactory.it/cakephp/cakephp-jquery-autocomplete-helper.html#comments</comments>
		<pubDate>Wed, 26 Mar 2008 12:10:33 +0000</pubDate>
		<dc:creator>Gianluca</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[helper]]></category>

		<guid isPermaLink="false">http://www.ideafactory.it/2008/03/26/cakephp-jquery-autocomplete-helper/</guid>
		<description><![CDATA[CakePHP è un framework web scritto in PHP, che segue i principi di Ruby on Rails e quindi permette un rapido sviluppo delle applicazioni. La componente Ajax di CakePHP si basa su Prototype ma, l&#8217;estrema flessibilità del framework, ci permette di includere qualsiasi altra libreria Javascript. Io utilizzo jQuery perché, con poche e comprensibili istruzioni, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cakephp.org" onclick="pageTracker._trackPageview('/outgoing/www.cakephp.org?referer=');">CakePHP</a> è un <a href="http://it.wikipedia.org/w/index.php?title=Framework_web&amp;action=edit&amp;redlink=1" class="new" title="Framework web (pagina inesistente)" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/w/index.php?title=Framework_web_amp_action=edit_amp_redlink=1&amp;referer=');">framework web</a> scritto in <a href="http://it.wikipedia.org/wiki/PHP" title="PHP" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/PHP?referer=');">PHP</a>, che segue i principi di <a href="http://it.wikipedia.org/wiki/Ruby_on_Rails" title="Ruby on Rails" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/Ruby_on_Rails?referer=');">Ruby on Rails</a> e quindi permette un rapido sviluppo delle applicazioni.</p>
<p>La componente <a href="http://it.wikipedia.org/wiki/AJAX" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/AJAX?referer=');">Ajax</a> di <a href="http://www.cakephp.org" onclick="pageTracker._trackPageview('/outgoing/www.cakephp.org?referer=');">CakePHP</a> si basa su <a href="http://www.prototypejs.org/" onclick="pageTracker._trackPageview('/outgoing/www.prototypejs.org/?referer=');">Prototype</a> ma, l&#8217;estrema flessibilità del framework, ci permette di includere qualsiasi altra libreria Javascript.</p>
<p>Io utilizzo <a href="http://jquery.com" onclick="pageTracker._trackPageview('/outgoing/jquery.com?referer=');">jQuery</a> perché, con poche e comprensibili istruzioni, permette di fare cose davvero straordinarie e quindi ho pensato di scrivere un <a href="http://manual.cakephp.org/chapter/helpers" onclick="pageTracker._trackPageview('/outgoing/manual.cakephp.org/chapter/helpers?referer=');">helper</a> per <a href="http://www.cakephp.org" onclick="pageTracker._trackPageview('/outgoing/www.cakephp.org?referer=');">CakePHP</a> che implementasse l&#8217;autocomplete facendo delle richieste <a href="http://it.wikipedia.org/wiki/AJAX" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/AJAX?referer=');">Ajax</a> al server tramite l&#8217;ausilio di <a href="http://jquery.com" onclick="pageTracker._trackPageview('/outgoing/jquery.com?referer=');">jQuery</a>.</p>
<p>Il mio <a href="http://manual.cakephp.org/chapter/helpers" onclick="pageTracker._trackPageview('/outgoing/manual.cakephp.org/chapter/helpers?referer=');">helper</a> si chiama &#8220;<em>jmycake</em>&#8221; perché verrà ampliato ogni qualvolta avrò la necessità di <a href="http://jquery.com" onclick="pageTracker._trackPageview('/outgoing/jquery.com?referer=');">jQuery</a> all&#8217;interno delle mie applicazioni.<span id="more-53"></span></p>
<p>Ecco come ho è strutturato l&#8217;<a href="http://http://manual.cakephp.org/chapter/helpers" onclick="pageTracker._trackPageview('/outgoing/http_//manual.cakephp.org/chapter/helpers?referer=');">helper</a>:</p>
<p><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/jmycakephp.txt" title="jmycake helper file" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/jmycakephp.txt?referer=');">jmycake helper file</a></p>
<p>La funzione <em>autocomplete</em> aggiunge un blocco di codice JavaScript che si occuperà di:</p>
<ul>
<li> modificare le caratteristiche dell&#8217;input sul quale verrà effettuato l&#8217;autocompletamento</li>
<li>effettuare le richieste Ajax verso il server</li>
<li>visualizzare i risultati in una lista <strong>selezionabile</strong> anche con le freccette della tastiera</li>
<li>autocompletare i campi passati come parametro alla funzione</li>
</ul>
<p>Nel file <em>app_controller.php</em> sarà necessario inserire questa funzione:</p>
<p><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/app_controller-autocompletephp.txt" title="Funzione da inserire in app_controller.php" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/app_controller-autocompletephp.txt?referer=');">Funzione da inserire in app_controller.php</a></p>
<p>Eh, come il buon <a href="http://en.wikipedia.org/wiki/Model-view-controller" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Model-view-controller?referer=');">pattern MVC</a> vuole, creare la relativa vista:</p>
<p><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/autocompletectp.txt" title="Autocomplete View" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/autocompletectp.txt?referer=');">Autocomplete View</a></p>
<p>La vista ha lo stesso nome della funzione (<em>autocomplete),</em> con estensione<em> .ctp</em> visto che utilizzo <a href="http://www.cakephp.org" onclick="pageTracker._trackPageview('/outgoing/www.cakephp.org?referer=');">CakePHP</a> 1.2 ed io l&#8217;ho posizionata nella directory &#8220;<em>common</em>&#8221; ma il file può essere salvato dove si vuole a patto di modificare questa riga nell&#8217;<em>app_controller</em>:</p>
<p><code><br />
$this-&gt;render('autocomplete','ajax','/common/autocomplete');<br />
</code></p>
<p>C&#8217;è da ricordarsi inoltre di inserire &#8216;<em>Jmycake</em>&#8216; nell&#8217;array <em>$helpers</em> del vostro controller insieme a &#8216;<em>Html</em>&#8216;, &#8216;<em>Form</em>&#8216; e &#8216;<em>Javascript</em>&#8216;:</p>
<p><code><br />
var $helpers = array('Html','Form','Javascript','Jmycake');<br />
</code></p>
<p>Io l&#8217;ho inserito direttamente in <em>app_controller.php</em> così è ereditario in tutti gli altri controller.</p>
<p>Adesso inseriamo in una vista di prova l&#8217;<em>autocomplete</em>.</p>
<p>Supponiamo che abbiamo questa vista:</p>
<p><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/indexctp.txt" title="View standard" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/indexctp.txt?referer=');">View standard</a></p>
<p>Se desideriamo l&#8217;autocompletamento sul campo &#8220;<em>nation</em>&#8220;, sarà sufficiente aggiungere dentro ai tag del form:<br />
<code><br />
&lt;?php echo $jmycake-&gt;autocomplete('NationNation','Nation/nation',array('NationId'=&gt;'id','NationIso'=&gt;'iso')); ?&gt;<br />
</code><br />
Così facendo all&#8217;input con id &#8220;NationNation&#8221; verrà aggiunto l&#8217;autocompletamento che prenderà i dati dal modello &#8220;Nation&#8221;, cercando, le lettere inserite attreaverso l&#8217;input, nel campo &#8220;nation&#8221; (ecco perché il secondo parametro è Nation/nation&#8221;).<br />
L&#8217;array passato come ultimo argomento contiene gli id dei campi di input da riempire ed il nome del campo da cui prendere i dati nel database.<br />
La funzione autocomplete ha anche altri due parametri facoltativi che sono:</p>
<ol>
<li>il numero di risultati da visualizzare nella lista dell&#8217;autocomplete</li>
<li>la lunghezza minima della stringa per effettuare le richieste</li>
</ol>
<p>Per finire, vi mostro il mio CSS che renderizza i risultati:</p>
<p><a href="http://192.168.1.7/blog/wp-content/uploads/2008/03/mycss.txt" title="Foglio di stile per l’autocomplete" onclick="pageTracker._trackPageview('/outgoing/192.168.1.7/blog/wp-content/uploads/2008/03/mycss.txt?referer=');">Foglio di stile per l’autocomplete</a></p>
<p>Ovviamente va incluso sia il foglio di stile sopra mostrato che la libreria <a href="http://jquery.com" onclick="pageTracker._trackPageview('/outgoing/jquery.com?referer=');">jQuery</a> che si può <a href="http://docs.jquery.com/Downloading_jQuery" onclick="pageTracker._trackPageview('/outgoing/docs.jquery.com/Downloading_jQuery?referer=');">scaricare liberamente dal sito</a>.</p>
<p>Spero di essere stato utile a qualcuno e di ricevere qualche feedback positivo.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideafactory.it/cakephp/cakephp-jquery-autocomplete-helper.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
