<?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; formhelper</title>
	<atom:link href="http://www.luizz.it/tag/formhelper/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, 05 Jan 2012 08:48:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<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>
	</channel>
</rss>

