<?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>Hello World: &#187; Zend Framework</title>
	<atom:link href="http://razorblade.netsons.org/category/php/zend-framework-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://razorblade.netsons.org</link>
	<description>Programmazione web e oltre: php5, Zend Framework, jQuery, Actionscript 3.0, Sandy 3D Engine e altro</description>
	<lastBuildDate>Fri, 28 Aug 2009 18:23:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework</title>
		<link>http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/</link>
		<comments>http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 18:09:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Generale]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[neobazar]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend_cache]]></category>
		<category><![CDATA[zend_lucene]]></category>
		<category><![CDATA[zend_route]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=88</guid>
		<description><![CDATA[<h1>Nasce Neobazaar.com, annunci gratuiti in Italia: interamente sviluppato con Zend Framework</h1>
<p>E' un po' che non scrivo più su questo mio blog, purtroppo negli ultimi mesi non ho avuto tempo per scrivere nuovi articoli e/o tutorial. Uno dei progetti che più mi ha tenuto impegnato è <a href='http://www.neobazaar.com' title='Neobazaar.com: annunci gratuiti in Italia'>Neobazaar.com</a>, che allo stato attuale dei lavori si può considerare ad un buon 95% di completamento </p><a href="http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework">[...] Continua</a>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h1>Nasce Neobazaar.com, annunci gratuiti in Italia: interamente sviluppato con Zend Framework</h1>
<p>E&#8217; un po&#8217; che non scrivo più su questo mio blog, purtroppo negli ultimi mesi non ho avuto tempo per scrivere nuovi articoli e/o tutorial. Uno dei progetti che più mi ha tenuto impegnato è <a href='http://www.neobazaar.com' title='Neobazaar.com: annunci in Italia'>Neobazaar.com</a>, che allo stato attuale dei lavori si può considerare ad un buon 95% di completamento.</p>
<p><a href='http://www.neobazaar.com' title='Neobazaar.com: annunci in Italia'>Neobazaar.com</a> è il classico sito di annunci gratuiti, chiunque può inserire un annuncio, e se lo si desidera, ci si iscrive, con la possibilità di poter gestire i propri annunci tramite un pannello di controllo.</p>
<p>L&#8217;annuncio rimane online per i 30 giorni successivi alla pubblicazione, dopodichè viene eliminato automaticamente.</p>
<p>In questo articolo voglio descrivervi alcune delle caratteristiche tecniche presenti in questo mio progetto, ed eventualmente rispondere alle vostre domande/consigli/critiche in merito.</p>
<h2>SEO: search engine optimization</h2>
<p>Sono diversi gli aspetti a cui ho posto attenzione per quanto riguarda l&#8217;ottimizzazione per i motori di ricerca, una della quali è la risposta alle richieste da parte del server, ovvero facendo in modo che il tempo di attesa per la restituzione del documento html sia il minore possibile.</p>
<p>A questo scopo sono due i componenti di Zend Framework che si sono resi molto utili: <strong>Zend_Search_Lucene</strong> e <strong>Zend_Cache</strong>.</p>
<p><strong>Zend_Search_Lucene</strong>, come già descritto in altri articoli in questo blog, è un motore di ricerca su filesystem, che ci permette di liberare dall&#8217;onere delle ricerche il nostro database, ma non solo, possiamo recuperare i dati dei nostri documenti direttamente da esso.</p>
<p><strong>Zend_Cache</strong> è un altro utilissimo componente di Zend Framework, la sua utilità è di immagazzinare dei dati, presumibilmnete risultato di pesanti query o algoritmi, e riutilizzarli nelle successive richieste per tutto il tempo da noi indicato.</p>
<p>L&#8217;utilizzo combinato di questi due componenti nell&#8217;applicazione rende la restituzione del codice html estremamente veloce, caratteristica che oltre ad essere <u>potenzialmente</u> utile al fine dell&#8217;indicizzazione, è sicuramente gradita agli utenti ( che quindi non chiuderanno la pagina dopo il terzo secondo di vana attesa <img src='http://razorblade.netsons.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p><strong>Generazione dinamica dei tag title e description</strong>: come saprete, al fine dell&#8217;ottimizzazione, bisogna fare in modo di inserire in cima al documento le parole di maggior rilievo, ed ecco l&#8217;importanza del tag title. In neobazaar.com il contenuto del tag title è generato dinamicamente, dipendentemente dalla query ricercata, dalla categoria selezionata e dalla location in cui ci si trova. Il suo contenuto è ovviamente coerente al contenuto generale del documento. </p>
<p>Per quanto riguarda il tag description anch&#8217;esso è dinamico: sappiamo però che i meta, molto probabilmente, sono &#8216;ignorati&#8217; dai motori di ricerca al fine del posizionamento nelle serp, ma &#8216;description&#8217; è comunque utile, in quanto il suo contenuto sarà visualizzato nella serp dei motori di ricerca, ed avrà l&#8217;arduo compito di convincere l&#8217;utente a cliccare il proprio sito piuttosto che un altro.</p>
<p><strong>Routing</strong>: bisogna fare molta attenzione alle url del nostro sito internet, in quanto, pare sia uno degli elementi che i motori di ricerca esaminano al fine dell&#8217;indicizzazione e del posizionamento. Queste devono avere principalmente due caratteristiche: devono essere &#8217;statiche&#8217; e devono contenere le principali keyworks identificative del documento. </p>
<p>In <a href='http://www.neobazaar.com' title='Neobazaar.com: annunci in Italia'>Neobazaar.com</a>  ho posto molta attenzione al contenuto delle url: queste infatti sono sempre statiche ( dove per statiche si intendono senza variabili successive al carattere &#8216;?&#8217; e che magari terminino per &#8216;.html&#8217; ), sia che si effettui una ricerca, sia che si visiti una categoria o si visiti una pagina di contenuto.</p>
<p>Sulla questione delle &#8216;location&#8217; bisogna scrivere due righe: infatti <a href='http://www.neobazaar.com' title='Neobazaar.com: annunci in Italia'>Neobazaar.com</a> permette il filtraggio degli annunci al livello nazionale ( di default ), a livello regionale, provinciale e persino comunale ( questa caratteristica è tuttavia attualmente non disponibile ). </p>
<p>Il filtraggio è dato dal routing, la location è data dal nome del sottodominio: questo risultato è stato raggiunto concatenando la route di default di Zend Framework ( una Module Route ) con una Hostname Route</p>
<p>Inoltre il layout è oviamente, completamente tableless&#8230;</p>
<h2>Conclusioni</h2>
<p>E&#8217; ovvio che non ho elencato tutte le caratteristiche di <a href='http://www.neobazaar.com' title='Neobazaar.com: annunci in Italia'>Neobazaar.com</a>. Ho scritto questo post proprio per permettere a chi fosse interessato, di farmi delle domande, ed ovviamente, anche per fare un po&#8217; di sana pubblicità a questo sito in modo da poterlo testare con un minimo di traffico <img src='http://razorblade.netsons.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Quindi, spero di ricevere al più presto una vostra visita nonchè i vostri commenti qui di seguito!</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8.2 disponibile</title>
		<link>http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/</link>
		<comments>http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/#comments</comments>
		<pubDate>Sat, 30 May 2009 22:17:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[1.8.2]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=87</guid>
		<description><![CDATA[La notizia è di 2 giorni fa, in ogni caso è disponibile la nuova versione di Zend Framework, qui di seguito il changelog completo:


    [ZF-6800]: testExceptionClassMap(Zend_Amf_TypeloaderTest)    

    [ZF-6799]: testAmf0TypedObjecDeserializedToNativePHPObjectException(Zend_Amf_RequestTest)    

    [ZF-6601]: Unable to send ArrayCollection as input argument from flex [...]


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8 Beta 1 disponibile'>Zend Framework 1.8 Beta 1 disponibile</a> <small>Zend Framework 1.8 Beta 1 is available at: http://framework.zend.com/download/latest Questa...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li><li><a href='http://razorblade.netsons.org/2009/05/06/creare-un-progetto-zend-framework-180-con-zend_tool-e-wamp-server/' rel='bookmark' title='Permanent Link: Creare un progetto Zend Framework 1.8.0 con Zend_Tool e Wamp Server'>Creare un progetto Zend Framework 1.8.0 con Zend_Tool e Wamp Server</a> <small>Sono numerose le novità portate dalla nuova versione 1.8.0 di...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>La notizia è di 2 giorni fa, in ogni caso è disponibile la nuova versione di Zend Framework, qui di seguito il changelog completo:</p>
<ul class="listato">
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6800"><br />
    [ZF-6800]</a>: testExceptionClassMap(Zend_Amf_TypeloaderTest)    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6799"><br />
    [ZF-6799]</a>: testAmf0TypedObjecDeserializedToNativePHPObjectException(Zend_Amf_RequestTest)    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6601"><br />
    [ZF-6601]</a>: Unable to send ArrayCollection as input argument from flex    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-5391"><br />
    [ZF-5391]</a>: Flash Media Server 3 &#8211; Zend Amf    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6609"><br />
    [ZF-6609]</a>: testInitializationShouldSkipModulesWithoutBootstraps(Zend_Application_Resource_ModulesTest) and testShouldReturnExecutedBootstrapsWhenComplete(Zend_Application_Resource_ModulesTest)    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6608"><br />
    [ZF-6608]</a>: Problem if /tmp Dir not readable    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6770"><br />
    [ZF-6770]</a>: Move the Table, Row, &amp; Rowset files for Zend_Db_Table unit tests into the _files directory    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6762"><br />
    [ZF-6762]</a>: wrong order in PHPDoc of _quoteIdentifierAs()    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-6662"><br />
    [ZF-6662]</a>: misspelling in Zend_Db_Adapter_Abstract: Zend_Db_Statment instead of Zend_Db_Statement    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-1816"><br />
    [ZF-1816]</a>: PostgreSQL: Incorrect sequence name quoting    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-5342"><br />
    [ZF-5342]</a>: Mysqli::__connect() forget to reset internal mysqli _connection object when connection failed    </li>
<li><a href="http://framework.zend.comhttp://framework.zend.com/issues/browse/ZF-3984"><br />
    [ZF-3984]</a>: connection control not sufficient in case of &#8220;Too many open links&#8221;.    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-2925"><br />
    [ZF-2925]</a>: Problem using join in Zend_Db_Table    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-5970"><br />
    [ZF-5970]</a>: Optimize Zend_Db_Table::find();    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-4167"><br />
    [ZF-4167]</a>: Zend_Db_Table_Row_Abstract does not properly rely on autoloading    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-3991"><br />
    [ZF-3991]</a>: Add possibility to change loader class    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-2798"><br />
    [ZF-2798]</a>: JOIN requires FROM otherwise it acts just like FROM    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6780"><br />
    [ZF-6780]</a>: Zend_Filter_Input doesn&#8217;t collect validation messages for different values in the specified field    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6765"><br />
    [ZF-6765]</a>: Zend_Filter_Input::_validateRule() iterates through provided fields when it&#8217;s not necessary    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6761"><br />
    [ZF-6761]</a>: Zend_Filter_Input does nothing if field is required and default values are provided for other fields but not for this field.    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6711"><br />
    [ZF-6711]</a>: Zend_Filter_Input skips ALLOW_EMPTY metacommand processing if rule refers several fields.    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6710"><br />
    [ZF-6710]</a>: Describe an ability to provide messages array for all specified validator    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6709"><br />
    [ZF-6709]</a>: Zend_Filter_Input doesn&#8217;t process messages -&gt; validators mapping correctly    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6708"><br />
    [ZF-6708]</a>: Zend_Filter_Input skips ALLOW_EMPTY metacommand processing if any validator is applied to the field    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-1912"><br />
    [ZF-1912]</a>: Message concurrency between options notEmptyMessage and  Zend_Validate_Alpha::STRING_EMPTY    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6714"><br />
    [ZF-6714]</a>: Zend_Decorator not exists.    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6607"><br />
    [ZF-6607]</a>: Problem with Zend_Soap_Wsdl class loading    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-3151"><br />
    [ZF-3151]</a>: The ZF is not able to use user-defined autoloaders for user-defined classes    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-2533"><br />
    [ZF-2533]</a>: Zend internally doesn&#8217;t use user-defined class loader    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6619"><br />
    [ZF-6619]</a>: Invalid @return value for getLanguage()    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6639"><br />
    [ZF-6639]</a>: Typo in file arrray (should be array)    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6730"><br />
    [ZF-6730]</a>: Zend_Service_Amazon_Abstract unit test missing    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6669"><br />
    [ZF-6669]</a>: Amazon S3 Stream Wrapper &#8211; Upload &amp; Uri    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6648"><br />
    [ZF-6648]</a>: Amazon S3 StreamWrapper &#8211; is_dir Funktion    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6477"><br />
    [ZF-6477]</a>: Zend_Service_Amazon_S3 : Does not work for buckets located in EU    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6643"><br />
    [ZF-6643]</a>: Signature version should be upgraded ASAP    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6483"><br />
    [ZF-6483]</a>: Zend_Service_Amazon_Ec2 describe() won&#8217;t work for european instances    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6072"><br />
    [ZF-6072]</a>: $_singleInstances are not cleaned up with namespaceUnset()    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-2060"><br />
    [ZF-2060]</a>: missing method Zend_Session::getOption / getOptions    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6417"><br />
    [ZF-6417]</a>: Zend_Db_Table createRow() call Zend_Loader::loadClass unconditionally    </li>
<li><a href="http://framework.zend.com/issues/browse/ZF-6016"><br />
    [ZF-6016]</a>: Zend_* ignoring my Zend_Loader::registerAutoload()    </li>
</ul>
<p><a href="http://framework.zend.com/download/current/">Download Zend Framework</a></p>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8 Beta 1 disponibile'>Zend Framework 1.8 Beta 1 disponibile</a> <small>Zend Framework 1.8 Beta 1 is available at: http://framework.zend.com/download/latest Questa...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li><li><a href='http://razorblade.netsons.org/2009/05/06/creare-un-progetto-zend-framework-180-con-zend_tool-e-wamp-server/' rel='bookmark' title='Permanent Link: Creare un progetto Zend Framework 1.8.0 con Zend_Tool e Wamp Server'>Creare un progetto Zend Framework 1.8.0 con Zend_Tool e Wamp Server</a> <small>Sono numerose le novità portate dalla nuova versione 1.8.0 di...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8.1 disponibile</title>
		<link>http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/</link>
		<comments>http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/#comments</comments>
		<pubDate>Wed, 13 May 2009 06:55:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend Framework 1.8.1]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=86</guid>
		<description><![CDATA[<p>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione di Zend Framework, la 1.8.1. Nonostante siano passati solo 13 giorni dal rilascio della serie 1.8, questa nuova versione corregge ben 68 problemi segnalati dalla community.</p>
<p>Potete scaricarlo da <a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a>.</p>
<p>Qui di seguito un breve riepilogo:<a href="http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li><li><a href='http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8 Beta 1 disponibile'>Zend Framework 1.8 Beta 1 disponibile</a> <small>Zend Framework 1.8 Beta 1 is available at: http://framework.zend.com/download/latest Questa...</small></li><li><a href='http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/' rel='bookmark' title='Permanent Link: Rilasciato Zend Framework 1.8.0'>Rilasciato Zend Framework 1.8.0</a> <small>E' stata rilasciata oggi la versione definitiva di Zend Framework...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Lo Zend Framework Team annuncia l&#8217;immediata disponibilità della nuova versione di Zend Framework, la 1.8.1. Nonostante siano passati solo 13 giorni dal rilascio della serie 1.8, questa nuova versione corregge ben 68 problemi segnalati dalla community.</p>
<p>Potete scaricarlo da <a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a>.</p>
<p>Qui di seguito un breve riepilogo:</p>
<p>  * Zend_Loader::registerAutoload() now proxies to<br />
    Zend_Loader_Autoloader, and marks the instance as a fallback<br />
    autoloader. This will ensure equivalent functionality, and reduces<br />
    the number of deprecation notices emitted to one.</p>
<p>  * Many bugfixes and improvements to Zend_Application.</p>
<p>  * Addition of module generation capabilities to Zend_Tool</p>
<p>  * Addition of strong object typing capabilities to Zend_Amf</p>
<p>  * Many more manual translations!</p>
<p>For a full list of resolved issues, please visit:</p>
<p>    <a href="http://short.ie/zf1-8-1-issues">http://short.ie/zf1-8-1-issues</a></p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li><li><a href='http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8 Beta 1 disponibile'>Zend Framework 1.8 Beta 1 disponibile</a> <small>Zend Framework 1.8 Beta 1 is available at: http://framework.zend.com/download/latest Questa...</small></li><li><a href='http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/' rel='bookmark' title='Permanent Link: Rilasciato Zend Framework 1.8.0'>Rilasciato Zend Framework 1.8.0</a> <small>E' stata rilasciata oggi la versione definitiva di Zend Framework...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creare un progetto Zend Framework 1.8.0 con Zend_Tool e Wamp Server</title>
		<link>http://razorblade.netsons.org/2009/05/06/creare-un-progetto-zend-framework-180-con-zend_tool-e-wamp-server/</link>
		<comments>http://razorblade.netsons.org/2009/05/06/creare-un-progetto-zend-framework-180-con-zend_tool-e-wamp-server/#comments</comments>
		<pubDate>Wed, 06 May 2009 10:45:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[create project]]></category>
		<category><![CDATA[variabili di ambiente]]></category>
		<category><![CDATA[Zend_Tool]]></category>
		<category><![CDATA[ZF 1.8.0]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=84</guid>
		<description><![CDATA[<p>Sono numerose le novità portate dalla nuova versione 1.8.0 di Zend Framework, come per esempio la possibilità di generare un progetto base utilizzando il componente Zend_Tool e lanciare un semplice comando da terminale. Premetto che il tutorial è scritto per gli utenti windows.</p>

<p>Per far ciò abbiamo prima la necessità di apportare alcune modifiche al nostro sistema operativo, niente di complicato, solo aggiungere alcune variabili d'ambiente. Ma andiamo con ordine.</p>

<p>Recatevi a questo indirizzo <a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a> e scaricate la versione di zend framework 'Zend Framework 1.8.0 Minimal'. Create quindi <a href="http://razorblade.netsons.org/2009/05/06/creare-un-progetto-zend-framework-180-con-zend_tool-e-wamp-server">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Sono numerose le novità portate dalla nuova versione 1.8.0 di Zend Framework, come per esempio la possibilità di generare un progetto base utilizzando il componente Zend_Tool e lanciare un semplice comando da terminale. Premetto che il tutorial è scritto per gli utenti windows.</p>
<p>Per far ciò abbiamo prima la necessità di apportare alcune modifiche al nostro sistema operativo, niente di complicato, solo aggiungere alcune variabili d&#8217;ambiente. Ma andiamo con ordine.</p>
<p>Recatevi a questo indirizzo <a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a> e scaricate la versione di zend framework &#8216;Zend Framework 1.8.0 Minimal&#8217;. Create quindi una directory all&#8217;interno di Program Files e chiamatela ZendFrameworkCli, dovreste quindi avere il percorso C:\Program Files\ZendFrameworkCli sul vostro computer.</p>
<p>A questo punto estraete le directories &#8216;bin&#8217; e &#8216;library&#8217; dall&#8217;archivio scaricato all&#8217;interno di C:\Program Files\ZendFrameworkCli. Quindi al suo interno dovreste avere &#8216;bin&#8217; e &#8216;library&#8217;.</p>
<p>A questo punto recatevi su Pannello di Controllo -> Sistema, label &#8216;Avanzate&#8217;, cliccate sul bottone &#8216;Variabili d&#8217;ambiente&#8217;. Cercate quindi la voce &#8216;Path&#8217; sotto il riquadro &#8216;Variabili di sistema&#8217; ( quello in basso ). Selezionatelo e cliccate &#8216;Modifica&#8217;. Alla fine della stringa aggiungete &#8216;;C:\Program Files\ZendFrameworkCli\bin&#8217; , mi raccomando al ; iniziale, è importante in quanto serve a terminare l&#8217;ultima path precedentemente inclusa da qualche altra installazione.</p>
<p>Se utilizzate php con wampserver avrete la necessità di aggiungere una variabile di sistema per la locazione dell&#8217;eseguibile di php. Usando l&#8217;ultima versione di wamp server dovreste aggiungere questa &#8216;;C:\wamp\bin\php\php5.2.9-2&#8242; ovviamente vi consiglio di controllare se php.exe si trova effettivamente in quella posizione nel vostro computer.</p>
<p>Quindi <b>Riavviate</b>, le nuove modifiche saranno attive.</p>
<p>A questo punto andate su start -> esegui, inserite cmd e date invio: se tutto ha funzionato come si deve, scrivendo &#8216;zf show version&#8217; vi dovrebbe essere restituito &#8216;Zend Framework Version: 1.8.0&#8242;.</p>
<p>Possiamo quindi creare il nostro progetto, date il comando &#8216;zf create project zfproject&#8217;, dove &#8216;zfproject&#8217; sarà il nome della directory in cui il vostro progetto sarà creato, potete sostituirlo con quello che volete. Appena il comando avrà terminato di creare il progetto vi comunicherà dove questo è stato salvato, di default all&#8217;interno dela vostra cartella documenti.</p>
<p>Per comodità ho preferito spostare la directory creata da Zend_Tool su C:/wamp/ ( o comunque una directory superiore a www ). All&#8217;interno della directory contenente il progetto creato abbiamo la cartella &#8216;public&#8217;. Questa sarà da rinominare a vostro piacimento ed inserire nella parte pubblica del vostro webserver.</p>
<p>Se lo ritenete opportuno potete creare un virtual host per la vostra applicazione di prova con zf1.8.0, come spiegato in <a href="http://razorblade.netsons.org/2008/11/15/creare-un-virtual-host-su-windows-xp-con-wampserver/"<questo articolo</a>.</a></p>
<h2>Problemi riscontrati</h2>
<p>Ho incontrato qualche problema nel file index.php pubblico creato da zend tool, le costanti generate tramite l&#8217;utilizzo della funzione realpath risultavano stranamente vuote, ho apportato quindi alcune modifiche al file, che posto qui di seguito:</p>
<pre name="code" class="php">

  // Define container to application directory
  defined('DS')
      || define('DS',
                (DIRECTORY_SEPARATOR ? DIRECTORY_SEPARATOR
                                           : '/'));   

  // Define container to application directory
  defined('CONTAINER_DIR')
      || define('CONTAINER_DIR',
                (getenv('CONTAINER_DIR') ? getenv('CONTAINER_DIR')
                                           : 'zend'));  

  // Define application directory
  defined('APPLICATION_DIR')
      || define('APPLICATION_DIR',
                (getenv('APPLICATION_DIR') ? getenv('APPLICATION_DIR')
                                           : 'application'));

  // Define library directory
  defined('LIBRARY_DIR')
      || define('LIBRARY_DIR',
                (getenv('LIBRARY_DIR') ? getenv('LIBRARY_DIR')
                                           : 'library'));

  // Define condiguration directory
  defined('CONFIGS_DIR')
      || define('CONFIGS_DIR',
                (getenv('CONFIGS_DIR') ? getenv('CONFIGS_DIR')
                                           : 'configs'));

  // Define path to application directory
  defined('APPLICATION_PATH')
      || define('APPLICATION_PATH',
                dirname(dirname(dirname(__FILE__))).DS.CONTAINER_DIR.DS.APPLICATION_DIR.DS);

  // Define path to library directory
  defined('LIBRARY_PATH')
      || define('LIBRARY_PATH',
                dirname(APPLICATION_PATH).DS.LIBRARY_DIR.DS);

  // Define path to library directory
  defined('CONFIGS_PATH')
      || define('CONFIGS_PATH',
                APPLICATION_PATH.CONFIGS_DIR.DS);

  // Define application environment
  defined('APPLICATION_ENV')
      || define('APPLICATION_ENV',
                (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                           : 'production'));

  // Typically, you will also want to add your library/ directory
  // to the include_path, particularly if it contains your ZF install
  set_include_path(implode(PATH_SEPARATOR, array(
      LIBRARY_PATH,
      get_include_path(),
  )));

  //echo get_include_path();
  //exit;

  /** Zend_Application */
  require_once 'Zend/Application.php';

  // Create application, bootstrap, and run
  $application = new Zend_Application(
      APPLICATION_ENV,
      CONFIGS_PATH.'application.ini'
  );

  $application->bootstrap()
              ->run();
</pre>
<p>Alcune costanti come potete vedere, prendono un valore se lo trovano all&#8217;interno dell&#8217;htaccess, altrimenti ne utilizzano uno di default. Le uniche due costanti che hanno la necessità di essere specificate sono:</p>
<pre name="code" class="php">
SetEnv APPLICATION_ENV development
SetEnv CONTAINER_DIR zfproject
</pre>
<p>Le linee di codice qui sopra dovranno essere inserite in cima all&#8217;.htaccess.</p>
<p>Richiamando l&#8217;indirizzo locale dove avete inserito la parte pubblica ( o richiamando il vhost creato ), otterrete il seguente risultato</p>
<p><a href='http://razorblade.netsons.org/wp-content/zend.jpg' class="images"><img src="http://razorblade.netsons.org/wp-content/zend-300x208.jpg" alt="Zend Tool Zend Framework 1.8.0" title="zend" width="300" height="208" class="aligncenter size-medium wp-image-85" /></a></p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/05/06/creare-un-progetto-zend-framework-180-con-zend_tool-e-wamp-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rilasciato Zend Framework 1.8.0</title>
		<link>http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/</link>
		<comments>http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/#comments</comments>
		<pubDate>Fri, 01 May 2009 15:18:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[zend framework 1.8.0]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=83</guid>
		<description><![CDATA[<p>E' stata rilasciata oggi la versione definitiva di Zend Framework 1.8.0 che pone rimedio a più di 200 bugs. Qui di seguito la lista dei principali novità di questa versione:</p>

<p>* Zend_Tool, contributed by Ralph Schindler
  * Zend_Application, contributed by Ben Scholzen and 
    Matthew Weier O'Phinney
  * Zend_Loader_Autoloader and Zend_Loader_Autoloader_Resource,
    contributed by Matthew Weier O'Phinney
  * Zend_Navigation, contributed by Robin Skoglund
  * Zend_CodeGenerator, by Ralph Schindler<a href="http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8 Beta 1 disponibile'>Zend Framework 1.8 Beta 1 disponibile</a> <small>Zend Framework 1.8 Beta 1 is available at: http://framework.zend.com/download/latest Questa...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>E&#8217; stata rilasciata oggi la versione definitiva di Zend Framework 1.8.0 che pone rimedio a più di 200 bugs. Qui di seguito la lista dei principali novità di questa versione:</p>
<p>* Zend_Tool, contributed by Ralph Schindler<br />
  * Zend_Application, contributed by Ben Scholzen and<br />
    Matthew Weier O&#8217;Phinney<br />
  * Zend_Loader_Autoloader and Zend_Loader_Autoloader_Resource,<br />
    contributed by Matthew Weier O&#8217;Phinney<br />
  * Zend_Navigation, contributed by Robin Skoglund<br />
  * Zend_CodeGenerator, by Ralph Schindler<br />
  * Zend_Reflection, Ralph Schindler and Matthew Weier O&#8217;Phinney<br />
  * Zend Server backend for Zend_Cache, contributed by<br />
    Alexander Veremyev<br />
  * Zend_Service_Amazon_Ec2, contributed by Jon Whitcraft<br />
  * Zend_Service_Amazon_S3, Justin Plock and Stas Malyshev<br />
  * Incorporated Dojo 1.3<br />
  * Added support for arbitrary Dojo Dijits via view helpers<br />
  * Zend_Filter_Encrypt, contributed by Thomas Weidner<br />
  * Zend_Filter_Decrypt, contributed by Thomas Weidner<br />
  * Zend_Filter_LocalizedToNormalized and _NormalizedToLocalized,<br />
    contributed by Thomas Weidner<br />
  * Support for file upload progress support in Zend_File_Transfer,<br />
    contributed by Thomas Weidner<br />
  * Translation-aware routes, contributed by Ben Scholzen<br />
  * Route chaining capabilities, contributed by Ben Scholzen<br />
  * Zend_Json expression support, contributed by Benjamin Eberlei and<br />
    Oscar Reales<br />
  * Zend_Http_Client_Adapter_Curl, contributed by Benjamin Eberlei<br />
  * SOAP input and output header support, contributed by<br />
    Alexander Veremyev<br />
  * Support for keyword field search using query strings, contributed by<br />
    Alexander Veremyev<br />
  * Support for searching across multiple indexes in Zend_Search_Lucene,<br />
    contributed by Alexander Veremyev<br />
  * Significant improvements for Zend_Search_Lucene search result match<br />
    highlighting capabilities, contributed by Alexander Veremyev<br />
  * Support for page scaling, shifting and skewing in Zend_Pdf,<br />
    contributed by Alexander Veremyev<br />
  * Zend_Tag_Cloud, contributed by Ben Scholzen<br />
  * Locale support in Zend_Validate_Int and Zend_Validate_Float,<br />
    contributed by Thomas Weidner<br />
  * Phonecode support in Zend_Locale, contributed by Thomas Weidner<br />
  * Zend_Validate_Db_RecordExists and _RecordNotExists, contributed by<br />
    Ryan Mauger<br />
  * Zend_Validate_Iban, contributed by Thomas Weidner<br />
  * Zend_Validate_File_WordCount, contributed by Thomas Weidner</p>
<p>Potete scaricarlko da <a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a></p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8 Beta 1 disponibile'>Zend Framework 1.8 Beta 1 disponibile</a> <small>Zend Framework 1.8 Beta 1 is available at: http://framework.zend.com/download/latest Questa...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Luke: Lucene Index Toolbox di Andrzej Bialecki per Zend_Search_Lucene</title>
		<link>http://razorblade.netsons.org/2009/04/24/luke-lucene-index-toolbox-di-andrzej-bialecki-per-zend_search_lucene/</link>
		<comments>http://razorblade.netsons.org/2009/04/24/luke-lucene-index-toolbox-di-andrzej-bialecki-per-zend_search_lucene/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 06:48:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Andrzej Bialecki]]></category>
		<category><![CDATA[Lucene Index]]></category>
		<category><![CDATA[Luke]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Search_Lucene]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=78</guid>
		<description><![CDATA[<h2>Verificare il contenuto dell'indice di Lucene</h2>

<p>Se avete seguito <a href="http://razorblade.netsons.org/2008/09/30/zend-search-lucene-applicazione-reale-zend-framework-p10/">questo articolo</a> o comunque state lavorando con un'applicazione fatta con Zend Framework che utilizzi il componente Zend_Search_Lucene, potrebbe essere di grande utilità comprendere esattamente cosa include il vostro Search Index.</p>

<p>A questo scopo vi presento un'utilissima applicazione, Luke, un browser per l'indice di Lucene, che potete recuperare da <a href="http://www.getopt.org/luke/">http://www.getopt.org/luke/</a> o direttamente da <a href="http://www.getopt.org/luke/luke.jnlp">qui</a> (NOTA: richiede Java 1.5 o successivo )<a href="http://razorblade.netsons.org/2009/04/24/luke-lucene-index-toolbox-di-andrzej-bialecki-per-zend_search_lucene">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Verificare il contenuto dell&#8217;indice di Lucene</h2>
<p>Se avete seguito <a href="http://razorblade.netsons.org/2008/09/30/zend-search-lucene-applicazione-reale-zend-framework-p10/">questo articolo</a> o comunque state lavorando con un&#8217;applicazione fatta con Zend Framework che utilizzi il componente Zend_Search_Lucene, potrebbe essere di grande utilità comprendere esattamente cosa include il vostro Search Index.</p>
<p>A questo scopo vi presento un&#8217;utilissima applicazione, Luke, un browser per l&#8217;indice di Lucene, che potete recuperare da <a href="http://www.getopt.org/luke/">http://www.getopt.org/luke/</a> o direttamente da <a href="http://www.getopt.org/luke/luke.jnlp">qui</a> (NOTA: richiede Java 1.5 o successivo )</p>
<p><a href='http://razorblade.netsons.org/wp-content/luke_lucene_index_browser.jpg'><img src="http://razorblade.netsons.org/wp-content/luke_lucene_index_browser-300x237.jpg" alt="luke_lucene_index_browser" title="luke_lucene_index_browser" width="300" height="237" class="aligncenter size-medium wp-image-79" /></a></p>
<p>Lo screenshot di sopra rappresenta la schermata iniziale, dove vi sarà richiesto di inserire il percorso dove l&#8217;indice di Lucene è salvato. Una volta inserito, vi si presenterà la seguente schermata:</p>
<p><a href='http://razorblade.netsons.org/wp-content/luke_lucene_index_browser_3.jpg'><img src="http://razorblade.netsons.org/wp-content/luke_lucene_index_browser_3-300x253.jpg" alt="luke_lucene_index_browser" title="luke_lucene_index_browser" width="300" height="253" class="aligncenter size-medium wp-image-81" /></a></p>
<h2>Utilizzo</h2>
<p>Vi illustrerò brevemente alcuni possibili utilizzi. Cliccando su un termine rappresentante un campo del vostro indice ( la griglia in basso a sinistra ) e cliccando successivamente il tasto &#8216;Show top terms&#8217;, la griglia alla vostra destra visualizzerà esclusivamente il contenuto del campo selezionato per ogni record, vedi screenshot:</p>
<p><a href='http://razorblade.netsons.org/wp-content/luke_lucene_index_browser_4.jpg'><img src="http://razorblade.netsons.org/wp-content/luke_lucene_index_browser_4-300x253.jpg" alt="luke_lucene_index_browser" title="luke_lucene_index_browser_4" width="300" height="253" class="aligncenter size-medium wp-image-82" /></a></p>
<p>Selezionando la tab &#8216;Documents&#8217; potrete vedere in dettaglio il contenuto dei vostri documenti ed il tipo di indicizzazione usato. Tramite la tab &#8216;Search&#8217; potrete effettuare le ricerche, che presumibilmente daranno lo stesso risultato della vostra applicazione.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/04/24/luke-lucene-index-toolbox-di-andrzej-bialecki-per-zend_search_lucene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8 Beta 1 disponibile</title>
		<link>http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/</link>
		<comments>http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 02:28:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[zend framework 1.8.0]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=77</guid>
		<description><![CDATA[<p>Zend Framework 1.8 Beta 1 is available at: </p>
 
<p><a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a></p>

<p>Questa nuova versione è comunque ancora in beta, alcuni bug potrebbero presentarsi ed alcuni problemi sono presenti, quindi il team di Zend Framework ne sconsiglia l'utilizzo in produzione.</p>

<p>Numerosi sono i componenti aggiunti e migliorati in questa versione, ecco il listato completo qui di seguito:</p>

  * Zend_Tool, contributed by Ralph Schindler
  
  * Zend_Application, contributed by Ben Scholzen and 
    Matthew Weier O'Phinney
  
  * Zend_Loader_Autoloader and Zend_Loader_Autoloader_Resource,
    contributed by Matthew Weier O'Phinney<a href="http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile">[...] Continua</a>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/' rel='bookmark' title='Permanent Link: Rilasciato Zend Framework 1.8.0'>Rilasciato Zend Framework 1.8.0</a> <small>E' stata rilasciata oggi la versione definitiva di Zend Framework...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Zend Framework 1.8 Beta 1 is available at: </p>
<p><a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a></p>
<p>Questa nuova versione è comunque ancora in beta, alcuni bug potrebbero presentarsi ed alcuni problemi sono presenti, quindi il team di Zend Framework ne sconsiglia l&#8217;utilizzo in produzione.</p>
<p>Numerosi sono i componenti aggiunti e migliorati in questa versione, ecco il listato completo qui di seguito:</p>
<p>  * Zend_Tool, contributed by Ralph Schindler</p>
<p>  * Zend_Application, contributed by Ben Scholzen and<br />
    Matthew Weier O&#8217;Phinney</p>
<p>  * Zend_Loader_Autoloader and Zend_Loader_Autoloader_Resource,<br />
    contributed by Matthew Weier O&#8217;Phinney</p>
<p>  * Zend_Navigation, contributed by Robin Skoglund</p>
<p>  * Zend_CodeGenerator, by Ralph Schindler</p>
<p>  * Zend_Reflection, Ralph Schindler and Matthew Weier O&#8217;Phinney</p>
<p>  * Zend Server backend for Zend_Cache, contributed by Alexander Veremyev</p>
<p>  * Zend_Service_Amazon_Ec2, contributed by Jon Whitcraft</p>
<p>  * Zend_Service_Amazon_S3, Justin Plock and Stas Malyshev</p>
<p>  * Zend_Filter_Encrypt, contributed by Thomas Weidner</p>
<p>  * Zend_Filter_Decrypt, contributed by Thomas Weidner</p>
<p>  * Support for file upload progress support in Zend_File_Transfer,<br />
    contributed by Thomas Weidner</p>
<p>  * Translation-aware routes, contributed by Ben Scholzen</p>
<p>  * Zend_Json expression support, contributed by Benjamin Eberlei and<br />
    Oscar Reales</p>
<p>  * Zend_Http_Client_Adapter_Curl, contributed by Benjamin Eberlei</p>
<p>  * SOAP input and output header support, contributed by Alexander<br />
    Veremyev</p>
<p>  * Support for keyword field search using query strings,<br />
    contributed by Alexander Veremyev</p>
<p>  * Support for searching across multiple indexes in Zend_Search_Lucene,<br />
    contributed by Alexander Veremyev</p>
<p>  * Support for page scaling, shifting and skewing in Zend_Pdf,<br />
    contributed by Alexander Veremyev</p>
<p>  * Locale support in Zend_Validate_Int and Zend_Validate_Float,<br />
    contributed by Thomas Weidner</p>
<p>  * Phonecode support in Zend_Locale, contributed by Thomas Weidner</p>
<p>  * Zend_Validate_Iban, contributed by Thomas Weidner</p>
<p>  * Zend_Validate_File_WordCount, contributed by Thomas Weidner</p>
<p>  * Zend_Validate_LocalizedToNormalized and NormalizedToLocalized,<br />
    contributed by Thomas Weidner</p>
<p>  * Zend_Validate_Db_RecordExists and NoRecordExists, contributed<br />
    by Ryan Mauger</p>
<p>  * Zend_Tag_Cloud, contributed by Ben Scholzen</p>
<p>La versione 1.8.0 definitiva dovrebbe vedere la luce la prossima settimana.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/05/01/rilasciato-zend-framework-180/' rel='bookmark' title='Permanent Link: Rilasciato Zend Framework 1.8.0'>Rilasciato Zend Framework 1.8.0</a> <small>E' stata rilasciata oggi la versione definitiva di Zend Framework...</small></li><li><a href='http://razorblade.netsons.org/2009/05/13/zend-framework-181-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.1 disponibile'>Zend Framework 1.8.1 disponibile</a> <small>Lo Zend Framework Team annuncia l'immediata disponibilità della nuova versione...</small></li><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/04/23/zend-framework-18-beta-1-disponibile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</title>
		<link>http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/</link>
		<comments>http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 03:25:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[administration module zend framework]]></category>
		<category><![CDATA[modulo di amministrazione zend framework]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend layout plugin]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=68</guid>
		<description><![CDATA[<h2>Come usare Zend_Layout per la gestione dei moduli</h2>

<p>In quest'articolo vedremo come gestire differenti moduli con Zend Framework oltre a quello di default per creare, per esempio, un modulo di amministrazione.</p>

<p>A titolo riassuntivo, ecco un elenco di cosa abbiamo già visto di Zend Framework:</p>

<ul class="listato">
<li><a href="http://razorblade.netsons.org/2008/07/09/introduzione-a-zend-framework/" title="Introduzione a Zend Framework" rel="me">Introduzione a Zend Framework</a> con esempio pratico minimalista di utilizzo</li>
<li><a href="http://razorblade.netsons.org/2008/07/24/costruire-unapplicazione-reale-con-zend-framework-parte-1/" title="Configurazione Avanzata Zend Framework" rel="me">Configurazione Avanzata</a></li>
<li><a href="http://razorblade.netsons.org/2008/08/06/costruire-unapplicazione-reale-con-zend-framework-parte-2/" title="Two Step View Zend Framework" rel="me">Two Step View</a> per la gestione dei layouts</li>
<li><a href="http://razorblade.netsons.org/2008/08/06/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-3/" title="Implementazione di un layout complesso Two Step View Zend Framework" rel="me">Implementazione di un layout complesso</a> per la gestione dei layouts</li>
<li><a href="http://razorblade.netsons.org/2008/08/08/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-4/" title="Gestione dei modelli" rel="me">Gestione dei modelli</a> ed interazione con database</li>
<li><a href="http://razorblade.netsons.org/2008/08/15/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-5/" title="Gestione delle richieste asincrone Ajax" rel="me">Gestione delle richieste asincrone ( Ajax )</a> aiutandoci con l'utilizzo di jQuery</li>
<li><a href="http://razorblade.netsons.org/2008/08/18/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-6/" title="Gestione del database" rel="me">Gestione del database</a></li>
<li><a href="http://razorblade.netsons.org/2008/08/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-7/" title="Database e reference map" rel="me">Database e reference map</a></li>
<li><a href="http://razorblade.netsons.org/2008/09/13/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-8/" title="Autenticazione con Zend_Auth" rel="me">Autenticazione con Zend_Auth</a></li>
<li><a href="http://razorblade.netsons.org/2008/09/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-9/" title="Autorizzazione con Zend_Acl con esempio" rel="me">Autorizzazione con Zend_Acl</a> con esempio integrato al database</li>
<li><a href="http://razorblade.netsons.org/2008/09/30/zend-search-lucene-applicazione-reale-zend-framework-p10/" title="Motore di ricerca interno con Zend_Search_Lucene" rel="me">Zend Framework e Zend_Search_Lucene</a> motore di ricerca interno</li>
<li><a href="http://razorblade.netsons.org/2008/10/07/componente-zend_mail-applicazione-reale-zend-framework-p11/" title="Zend_Mail con esempio di invio email" rel="me">Zend Framework e Zend_Mail</a> con esempio di invio email</li>
<li><a href="http://razorblade.netsons.org/2008/10/27/zend-search-lucene-e-utf-8-unicode-con-zend-framework/" title="Zend Lucene e UTF8" rel="me">Zend Lucene e UTF8</a> con <b>esempio di applicazione scaricabile</b></li>
<li><a href="http://razorblade.netsons.org/2008/10/31/zend-framework-gestione-degli-errori-e-404-con-zend_log/" title="Zend_Log e gestione errore 404" rel="me">Zend_Log e gestione errore 404</a></li>
<li><a href="http://razorblade.netsons.org/2008/11/19/un-bootstrap-object-oriented-per-zend-framework-applicazione-reale-zend-framework-p12/" title="Zend Framework Bootstrap Object Oriented" rel="me">Zend Framework Bootstrap Object Oriented</a></li>
<li><a href="http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/" title="Form Con Zend_Form" rel="me">Form Con Zend_Form</a></li>
<li><a href="http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/" title="Recapcha Con Zend_Form" rel="me">Il componente Recapcha</a> per la sicurezza dei form</li>
</ul>

<p>Per la comprensione di questo articolo consiglio prima di leggere gli articoli a proposito della gestione di un bootstrap object oriented ma ancora prima della gestione dei layouts con Zend_Layout e two step view.<a href="http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/' rel='bookmark' title='Permanent Link: Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework'>Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework</a> <small>Nasce Neobazaar.com, annunci gratuiti in Italia: interamente sviluppato con Zend...</small></li><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Come usare Zend_Layout per la gestione dei moduli</h2>
<p>In quest&#8217;articolo vedremo come gestire differenti moduli con Zend Framework oltre a quello di default per creare, per esempio, un modulo di amministrazione.</p>
<p>A titolo riassuntivo, ecco un elenco di cosa abbiamo già visto di Zend Framework:</p>
<ul class="listato">
<li><a href="http://razorblade.netsons.org/2008/07/09/introduzione-a-zend-framework/" title="Introduzione a Zend Framework" rel="me">Introduzione a Zend Framework</a> con esempio pratico minimalista di utilizzo</li>
<li><a href="http://razorblade.netsons.org/2008/07/24/costruire-unapplicazione-reale-con-zend-framework-parte-1/" title="Configurazione Avanzata Zend Framework" rel="me">Configurazione Avanzata</a></li>
<li><a href="http://razorblade.netsons.org/2008/08/06/costruire-unapplicazione-reale-con-zend-framework-parte-2/" title="Two Step View Zend Framework" rel="me">Two Step View</a> per la gestione dei layouts</li>
<li><a href="http://razorblade.netsons.org/2008/08/06/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-3/" title="Implementazione di un layout complesso Two Step View Zend Framework" rel="me">Implementazione di un layout complesso</a> per la gestione dei layouts</li>
<li><a href="http://razorblade.netsons.org/2008/08/08/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-4/" title="Gestione dei modelli" rel="me">Gestione dei modelli</a> ed interazione con database</li>
<li><a href="http://razorblade.netsons.org/2008/08/15/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-5/" title="Gestione delle richieste asincrone Ajax" rel="me">Gestione delle richieste asincrone ( Ajax )</a> aiutandoci con l&#8217;utilizzo di jQuery</li>
<li><a href="http://razorblade.netsons.org/2008/08/18/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-6/" title="Gestione del database" rel="me">Gestione del database</a></li>
<li><a href="http://razorblade.netsons.org/2008/08/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-7/" title="Database e reference map" rel="me">Database e reference map</a></li>
<li><a href="http://razorblade.netsons.org/2008/09/13/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-8/" title="Autenticazione con Zend_Auth" rel="me">Autenticazione con Zend_Auth</a></li>
<li><a href="http://razorblade.netsons.org/2008/09/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-9/" title="Autorizzazione con Zend_Acl con esempio" rel="me">Autorizzazione con Zend_Acl</a> con esempio integrato al database</li>
<li><a href="http://razorblade.netsons.org/2008/09/30/zend-search-lucene-applicazione-reale-zend-framework-p10/" title="Motore di ricerca interno con Zend_Search_Lucene" rel="me">Zend Framework e Zend_Search_Lucene</a> motore di ricerca interno</li>
<li><a href="http://razorblade.netsons.org/2008/10/07/componente-zend_mail-applicazione-reale-zend-framework-p11/" title="Zend_Mail con esempio di invio email" rel="me">Zend Framework e Zend_Mail</a> con esempio di invio email</li>
<li><a href="http://razorblade.netsons.org/2008/10/27/zend-search-lucene-e-utf-8-unicode-con-zend-framework/" title="Zend Lucene e UTF8" rel="me">Zend Lucene e UTF8</a> con <b>esempio di applicazione scaricabile</b></li>
<li><a href="http://razorblade.netsons.org/2008/10/31/zend-framework-gestione-degli-errori-e-404-con-zend_log/" title="Zend_Log e gestione errore 404" rel="me">Zend_Log e gestione errore 404</a></li>
<li><a href="http://razorblade.netsons.org/2008/11/19/un-bootstrap-object-oriented-per-zend-framework-applicazione-reale-zend-framework-p12/" title="Zend Framework Bootstrap Object Oriented" rel="me">Zend Framework Bootstrap Object Oriented</a></li>
<li><a href="http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/" title="Form Con Zend_Form" rel="me">Form Con Zend_Form</a></li>
<li><a href="http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/" title="Recapcha Con Zend_Form" rel="me">Il componente Recapcha</a> per la sicurezza dei form</li>
</ul>
<p>Per la comprensione di questo articolo consiglio prima di leggere gli articoli a proposito della gestione di un bootstrap object oriented ma ancora prima della gestione dei layouts con Zend_Layout e two step view.</p>
<h2>Il modulo default</h2>
<p>Per convenzione, il modulo di default utilizzato dalla vostra applicazione sviluppata con Zend Framework si chiama, non a caso, default. Che significa questo? Immaginiamo che voi abbiate un controller chiamato &#8217;search&#8217; all&#8217;interno della vostra applicazione, una chiamata al suddetto controller potrebbe essere effettuata tramite la url &#8216;http://www.miosito.xx/search&#8217;. Non abbiamo specificato nessun modulo, quindi, per convenzione, è come se avessimo chiamato default. Infatti, possiamo ottenere lo stesso risultato richiamando la url &#8216;http://www.miosito.xx/<b>default/</b>search&#8217;.</p>
<p>Allo stesso modo, creando una directory chiamata &#8216;default&#8217; all&#8217;interno della directory &#8216;application&#8217; ed inserendo tutto il contenuto della seconda nella prima ( tranne che il file bootstrap.php ) tutto continuerebbe a funzionare.</p>
<h2>Creiamo il modulo di amministrazione</h2>
<p>Non è strettamente necessario, ma siccome non ho scoperto nessun genere di controindicazione ed aiuta a dare all&#8217;albero dell&#8217;applicazione quel pizzico di ordine aggiuntivo, creiamo all&#8217;interno di &#8216;application&#8217; la directory &#8216;default&#8217; ed inseriamo &#8216;controllers&#8217;, &#8216;models&#8217; e &#8216;views&#8217; all&#8217;interno di essa. Creiamo all&#8217;interno di &#8216;application&#8217; la directory &#8216;admin&#8217; ed al suo interno le 3 directories &#8216;controllers&#8217;, &#8216;models&#8217; e &#8216;views&#8217;.</p>
<p>Il nuovo albero dell&#8217;applicazione dovrebbe risultare quindi come il seguente:</p>
<ul class="applicationThree">
<li>la_mia_applicazione
<ul>
<li>application
<ul>
<li><b>default</b>
<ul>
<li>controllers</li>
<li>models</li>
<li>views
<ul>
<li>scripts
<ul>
<li>index</li>
<li>error</li>
</ul>
</li>
<li>layouts</li>
<li>filters</li>
<li>helpers</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><b>admin</b>
<ul>
<li>controllers</li>
<li>models</li>
<li>views
<ul>
<li>scripts
<ul>
<li>index</li>
</ul>
</li>
<li>layouts</li>
<li>filters</li>
<li>helpers</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>db</li>
<li>library
<ul>
<li>Zend</li>
</ul>
</li>
<li>tests
<ul>
<li>controllers</li>
<li>models</li>
</ul>
</li>
</ul>
</li>
<li>web_root (www)
<ul>
<li>css</li>
<li>img</li>
<li>js</li>
</ul>
</li>
</ul>
<h2>Rendere operativo il nuovo modulo</h2>
<p>Attualmente il nostro modulo di amministrazione non è nient&#8217;altro che una directory all&#8217;interno del nostro albero dell&#8217;applicazione, e non abbiamo ancora provveduto ad effettuare nessuna modifica al codice per &#8216;dire&#8217; a Zend Framework che, quando il modulo richiamato è &#8216;admin&#8217;, di andarsi a leggere il contenuto di admin e non di default.</p>
<p>Questo è proprio il nostro problema attuale: dobbiamo riuscire a recuperare il nome del modulo richiesto prima che Zend_Layout lo renderizzi. Per questo scopo creeremo il plugin library/MiaApplicazione/Layout/Controller/Plugin/<b>Layout.php</b></p>
<pre name="code" class="php">

  class MiaApplicazione_Layout_Controller_Plugin_Layout extends Zend_Layout_Controller_Plugin_Layout
  {
    public function preDispatch(Zend_Controller_Request_Abstract $request){
      switch ($request->getModuleName()){
        case 'admin':
          $this->_moduleChange('admin');
        }
      }

    protected function _moduleChange($moduleName){
      $basePath = dirname(dirname(dirname($this->getLayout()->getLayoutPath())));
      $this->getLayout()->setLayoutPath($basePath.DIRECTORY_SEPARATOR.$moduleName.'/views/layout');
      $this->getLayout()->setLayout($moduleName);
    }
  }
</pre>
<p>Il passo successivo è rendere operativo questo plugin. Per far ciò dobbiamo modificare il bootstrap modificando l&#8217;array passato ad argomento alla chiamata di Zend_Layout::startMvc.</p>
<pre name="code" class="php">
    public static function setupView(){
      $view = new Zend_View;
      $view->setEncoding('UTF-8');
      $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
      Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
      Zend_Layout::startMvc(
        array(
          'layoutPath' => ROOT_DIR.'/application/default/views/layouts',
          'layout' => 'layout',
          'pluginClass' => 'MiaApplicazione_Layout_Controller_Plugin_Layout'
        )
      );
    }
</pre>
<p>Inoltre dovremo apportare la seguente modifica al metodo setupFrontController per quanto riguarda l&#8217;assegnazione della directory dei controllers:</p>
<pre name="code" class="php">
    public static function setupFrontController(){
      self::$frontController = Zend_Controller_Front::getInstance();
      self::$frontController->throwExceptions((bool)self::$registry->config->front->throwExceptions);
      self::$frontController->returnResponse((bool)self::$registry->config->front->returnResponse);
      self::$frontController->registerPlugin(new Zend_Controller_Plugin_ErrorHandler());
      self::$frontController->setControllerDirectory(
        array(
          'default' => ROOT_DIR.'/application/default/controllers',
          'admin' => ROOT_DIR.'/application/admin/controllers'
        )
      );
    }
</pre>
<h2>Il layout di amministrazione</h2>
<p>Creiamo il file admin.phtml, che sarà il layout del modulo di amministrazione. Questo file dovrà trovarsi all&#8217;interno di application/admin/views/layout.</p>
<pre name="code" class="php">
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"&gt;
    &lt;head&gt;
      &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
      &lt;title&gt;Amministrazione &lt;?php echo $this-&gt;escape($this-&gt;pageTitle); ?&gt;&lt;/title&gt;
    &lt;/head&gt;
  &lt;body&gt;
    &lt;!-- start container --&gt;
    &lt;div id="container"&gt;

      &lt;!-- start subContainer --&gt;
      &lt;div id="subContainer"&gt;

        &lt;!-- start header --&gt;
        &lt;div id="header"&gt;&lt;?php //echo $this-&gt;layout()-&gt;header;?&gt;&lt;/div&gt;
        &lt;!-- end header --&gt;

        &lt;!-- start content --&gt;
        &lt;div id="content"&gt;&lt;?php echo $this-&gt;layout()-&gt;content;?&gt;&lt;/div&gt;
        &lt;!-- end content --&gt;

        &lt;!-- start footer --&gt;
        &lt;div id="footer"&gt;&lt;?php //echo $this-&gt;layout()-&gt;footer;?&gt;&lt;/div&gt;
        &lt;!-- end footer --&gt;

      &lt;/div&gt;
      &lt;!-- end subContainer --&gt;

    &lt;/div&gt;
    &lt;!-- end container --&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Infine avremo bisogno del file della view index.phtml che dovrà trovarsi all&#8217;interno di admin/views/script/index.</p>
<pre name="code" class="php">
&lt;h2&gt;Modulo di amministrazione&lt;/h2&gt;
</pre>
<p>Fatto ciò siete pronti per richiamare la url &#8216;http://www.miosito.xx/admin/&#8217; e contemplare il risultato del vostro lavoro.</p>
<h2>Riferimenti</h2>
<p><a href="http://blog.astrumfutura.com/archives/358-An-Example-Zend-Framework-Blog-Application-Part-5-Creating-Models-with-Zend_Db-and-adding-an-Administration-Module.html">blog.astrumfutura.com</a></p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/' rel='bookmark' title='Permanent Link: Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework'>Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework</a> <small>Nasce Neobazaar.com, annunci gratuiti in Italia: interamente sviluppato con Zend...</small></li><li><a href='http://razorblade.netsons.org/2009/05/31/zend-framework-182-disponibile/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.2 disponibile'>Zend Framework 1.8.2 disponibile</a> <small>La notizia è di 2 giorni fa, in ogni caso...</small></li><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Zend Framework: Zend_Form con ReCaptcha</title>
		<link>http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/</link>
		<comments>http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 19:33:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Captcha]]></category>
		<category><![CDATA[ReCaptcha]]></category>
		<category><![CDATA[Sicurezza Form]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Form]]></category>
		<category><![CDATA[Zend_Form_Element_Captcha]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=57</guid>
		<description><![CDATA[<h2>Utilizzare il webservice ReCaptcha per validare i form</h2>

<p>ReCaptcha è un servizio gratuito che mette a disposizione degli sviluppatori delle API per l'utilizzo di una versione sicura del famoso Captcha, ovvero l'immagine che ormai posseggono moltissimi form per assicurarsi che chi effettua la richiesta sia per davvero un essere umano e non un bot.</p>

<p>Per poter utilizzare Recapcha dovete avere due chiavi <a href="http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/' rel='bookmark' title='Permanent Link: Zend Framework: introduzione al componente Zend_Form'>Zend Framework: introduzione al componente Zend_Form</a> <small>Creare form web con Zend Form Con Zend Framework possiamo...</small></li><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Utilizzare il webservice ReCaptcha per validare i form</h2>
<p>ReCaptcha è un servizio gratuito che mette a disposizione degli sviluppatori delle API per l&#8217;utilizzo di una versione sicura del famoso Captcha, ovvero l&#8217;immagine che ormai posseggono moltissimi form per assicurarsi che chi effettua la richiesta sia per davvero un essere umano e non un bot.</p>
<p>Per poter utilizzare Recapcha dovete avere due chiavi, public e private, che potete recuperare gratuitamente iscrivendovi al sito <a href="http://recaptcha.net">http://recaptcha.net</a>, sito dove potete documentarvi più approfonditamente anche sul servizio e su cosa questo offre.</p>
<p>In questo articolo invece vedremo come implementare questo servizio nel componente Zend_Form. Per chi fosse a digiuno sul componente Zend_Form consiglierei prima di dare una lettura a <a href="http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/">questa pagina</a> in quanto per la comprensione di Zend_Form_Element_Captcha bisogna prima di tutto avere le basi su Zend_Form.</p>
<h2>Creare l&#8217;elemento CAPTCHA</h2>
<p>Per creare un elemento del tipo captcha all&#8217;interno di Zend_Form dovremo istanziare la classe Zend_Form_Element_Captcha e passare due argomenti al costruttore, il nome del campo input e un array di parametri, come in questo esempio:</p>
<pre name="code" class="php">
  $captcha = new Zend_Form_Element_Captcha('challenge', array(
    'captcha' => 'ReCaptcha',
    'captchaOptions' => array(
      'captcha' => 'ReCaptcha',
      'privKey' => [ la vostra chiave privata ],
      'pubKey' => [ la vostra chiave pubblica ]
    ),
  ));
</pre>
<p>Come per tutti gli elementi del form possiamo attribuire all&#8217;elemento dei decorators, per esempio racchiudere tutto all&#8217;interno di un tag P</p>
<pre name="code" class="php">
  $captcha->setDecorators(array(
    array('HtmlTag',
          array('tag' => 'p'))
  ));
</pre>
<p>Dopo aver creato l&#8217;elemento ricordatevi di aggiungerlo al form richiamando il metodo addElements:</p>
<pre name="code" class="php">
  // Se siamo nell'ambito di una classe che estende Zend_Form
  $this->addElements($captcha);

  // Se abbiamo istanziato direttamente Zend_Form
  $form->addElements($captcha);
</pre>
<h2>Usare Zend_Registry per le chiavi</h2>
<p>Potreste avere la necessità di dover utilizzare le chiavi in diversi form, quindi potrebbe essere utile inserire i parametri nel file di configurazione:</p>
<p>config.ini</p>
<pre name="code" class="php">
  recapcha.public = chiave pubblica;
  recapcha.private = chiave privata;
</pre>
<p>quindi il codice di sopra diventerebbe:</p>
<pre name="code" class="php">
  // Recuperiamo config
  $config = Zend_Registry::get('config');

  $captcha = new Zend_Form_Element_Captcha('challenge', array(
    'captcha' => 'ReCaptcha',
    'captchaOptions' => array(
      'captcha' => 'ReCaptcha',
      'privKey' => $config->recapcha->private,  // recuperiamo le chiavi dal file di configurazione
      'pubKey' => $config->recapcha->public
    ),
  ));
</pre>
<p>Il risultato che otterremo sarà la visualizzazione di questo box nel nostro form, potete trovare qualche approfondimento in <a href="http://framework.zend.com/manual/en/zend.service.recaptcha.html">questa pagina della documentazione ufficiale Zend</a>.</p>
<p><a href="http://razorblade.netsons.org/wp-content/recaptcha.jpg" class="images"><img src="http://razorblade.netsons.org/wp-content/recaptcha.jpg"/></a></p>
<p>Termina qui questo articolo su Zend_Form_Element_Captcha e ReCaptcha, se l&#8217;articolo vi è stato utile votatelo su digg e gli altri siti. </p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/' rel='bookmark' title='Permanent Link: Zend Framework: introduzione al componente Zend_Form'>Zend Framework: introduzione al componente Zend_Form</a> <small>Creare form web con Zend Form Con Zend Framework possiamo...</small></li><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Framework: introduzione al componente Zend_Form</title>
		<link>http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/</link>
		<comments>http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 16:26:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zedn Framework]]></category>
		<category><![CDATA[Zend_Filter]]></category>
		<category><![CDATA[Zend_Form]]></category>
		<category><![CDATA[Zend_Form_Element]]></category>
		<category><![CDATA[Zend_Validate]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=56</guid>
		<description><![CDATA[<h2>Creare form web con Zend Form</h2>
<p>Con Zend Framework possiamo tranquillamente inserire dei form nella nostra applicazione web utilizzando del 'semplice' html e costruirlo secondo le nostre necessità. Esiste però un componente chiamato Zend_Form con il quale possiamo creare i nostri form in maniera più 'Object Oriented', ovvero il form sarà una istanza dell'oggetto Zend_Form ed a loro volta, gli elementi che lo compongono saranno istanze degli oggetti :</p>

<ul class="listato">
  <li>Zend_Form_Element_Button</li>
  <li>Zend_Form_Element_Checkbox</li>
  <li>Zend_Form_Element_File</li>
  <li>Zend_Form_Element_Select</li>
  <li>...</li>
</ul>

<p>e così via, ovvero il suffisso Zend_Form_Element_ seguito dal nome <a href="http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Creare form web con Zend Form</h2>
<p>Con Zend Framework possiamo tranquillamente inserire dei form nella nostra applicazione web utilizzando del &#8217;semplice&#8217; html e costruirlo secondo le nostre necessità. Esiste però un componente chiamato Zend_Form con il quale possiamo creare i nostri form in maniera più &#8216;Object Oriented&#8217;, ovvero il form sarà una istanza dell&#8217;oggetto Zend_Form ed a loro volta, gli elementi che lo compongono saranno istanze degli oggetti :</p>
<ul class="listato">
<li>Zend_Form_Element_Button</li>
<li>Zend_Form_Element_Checkbox</li>
<li>Zend_Form_Element_File</li>
<li>Zend_Form_Element_Select</li>
<li>&#8230;</li>
</ul>
<p>e così via, ovvero il suffisso Zend_Form_Element_ seguito dal nome dell&#8217;elemento, che sta ad indicare che ogni elemento è una classe salvata in Zend/Form/Element/.</p>
<p>Oltre agli elementi del form sono disponibili i <b>decorators</b>. In poche parole i decorator definiscono i tag html in cui l&#8217;elemento del form è contenuto. Applicati all&#8217;istanza del form stesso definiscono di quali elementi html questo dev&#8217;essere composto, come ad esempio i tag fieldset, formElement e lo stesso form. A breve faremo qualche esempio per capire meglio.</p>
<p>Inoltre esiste la possibilità di aggiungere dei <b>filtri</b> per la validazione del form e dei metodi per l&#8217;internazionalizzazione.</p>
<p>L&#8217;argomento è estremamente vasto. In questo articolo mostrerò il metodo che preferisco per realizzare un form usando Zend_Form, ovvero creando una classe che estende questo componente ( un&#8217;altro metodo, per esempio, è specificare i vari parametri nel file config.ini ). Il consiglio è quindi di provare il codice che mostrerò nelle prossime righe per poi dare uno sguardo quanto prima alla <a href="http://framework.zend.com/manual/en/zend.form.html">documentazione ufficiale di Zend Form</a>.</p>
<h2>Creare un semplice form</h2>
<p>Creare l&#8217;oggetto form è semplice, basta istanziare Zend_Form:</p>
<pre name="code" class="php">
  $form = new Zend_Form;
</pre>
<p>una volta istanziato il form dovremo specificare la action ed il method. Come avviene per un normale form questa parte non è sempre necessaria, ma è consigliato sempre specificare questi parametri:>/p></p>
<pre name="code" class="php">
    $form->setAction('/resource/process')
        ->setMethod('post');
</pre>
</p>
<p>Possiamo anche aggiungere degli attrubuti al nostro form utilizzando il metodo setAttrib:</p>
<pre name="code" class="php">
    $form->setAttrib('id', 'login');
</pre>
<h2>Aggiungiamo gli elementi</h2>
<p>I seguenti sono gli elementi che potremo utilizzare all&#8217;interno del form:</p>
<ul class="listato">
<li>button</li>
<li>checkbox ( o diversi checkbox alla volta usando multiCheckbox )</li>
<li>hidden</li>
<li>image</li>
<li>password</li>
<li>radio</li>
<li>reset</li>
<li>select ( regolare e multi-select )</li>
<li>submit</li>
<li>text</li>
<li>textarea</li>
</ul>
<p>Ci sono 2 metodi per aggiungere un elemento al form, istanziare l&#8217;elemento e quindi aggiungerlo o aggiungere l&#8217;elemento specificando il tipo in modo testuale:</p>
<pre name="code" class="php">
  // 1
  $form->addElement(new Zend_Form_Element_Text('username'));
  // 2
  $form->addElement('text', 'username');
</pre>
<p>Il mio consiglio in questo caso è utilizzare il primo metodo. Più avanti vedremo che avremo la necessità di attribuire diversi parametri di vario tipo ad un elemento ed il codice resta più facilmente leggibile e gestibile utilizzandolo. Nella fattispecie il mio consiglio è di usare questo genere di sintassi:</p>
<pre name="code" class="php">
  $username = new Zend_Form_Element_Text('username');
  $form->addElement($username);
</pre>
<p>E&#8217; possibile specificare l&#8217;ordine di comparsa di un elemento, in mancanza del quale l&#8217;elemento sarà visualizzato nell&#8217;ordine in cui è stato inserito:</p>
<pre name="code" class="php">
  $username->setOrder(10);
</pre>
<h2>Aggiungere validatori e filtri ad un elemento</h2>
<p>Di default agli elementi non è attribuito nessun tipo di validatore o filtro, sarà lo sviluppatore a decidere se e quali inserire. Come succede per l&#8217;aggiunta di un elemento al form allo stesso modo si può passare un validatore ad un elemento:</p>
<pre name="code" class="php">
  $username = new Zend_Form_Element_Text('username');
  // 1
  $username->addValidator(new Zend_Validate_Alnum());
  // 2
  $username->addValidator('alnum');
</pre>
<p>I validatori ritornano un valore booleano, true o false. Esistono diversi tipi di validatori, oltre al &#8216;alnum&#8217; visto, che verifica se il campo contenga solo lettere e numeri, esistono i validatori Alpha, Barcode, Between, Ccnum, Regex per le espressoni regolari e diversi altri, tutti ovviamente molto utili. Per la lista completa vi rimando alla <a href="http://framework.zend.com/manual/en/zend.validate.set.html">documentazione ufficiale sui validatori</a>.</p>
<p>E&#8217; possibile settare un elemento come obbligatorio applicandogli il metodo setRequired:</p>
<pre name="code" class="php">
  $username->setRequired(true);
</pre>
<p>setRequired applica il NotEmpty validator all&#8217;elemento a cui viene applicato. Nella <b>validator chain</b> questo validator viene applicato in cima in modo da assicurare che l&#8217;elemento abbia un contenuto.</p>
<p>L&#8217;aggiunta dei filtri segue in pratica lo stesso concetto dei validatori:</p>
<pre name="code" class="php">
  $username->addFilter('StringtoLower');
</pre>
<p>Ecco un esempio completo del nostro campo username a cui vengono applicati diversi validatori e filtri:</p>
<pre name="code" class="php">
  // 1
  $username->addValidator('alnum')
           ->addValidator('regex', false, array('/^[a-z]/'))
           ->setRequired(true)
           ->addFilter('StringToLower');

  // 2
  $username->addValidators(array('alnum',
          array('regex', false, '/^[a-z]/i')
      ))
      ->setRequired(true)
      ->addFilters(array('StringToLower'));

  // 3
  $form->addElement('text', 'username', array(
    'validators' => array(
        'alnum',
        array('regex', false, '/^[a-z]/i')
    ),
    'required' => true,
    'filters'  => array('StringToLower'),
));
</pre>
<p>In questo caso abbiamo addirittura tre possibilità di scrittura per ottenere lo stesso risultato. Personalmente preferisco la prima nonostante la seconda e soprattutto, la terza, siano più compatte.</p>
<h2>Visualizzare un form</h2>
<p>Visualizzare un form è molto semplice, abbiamo due metodi, chiamare esplicitamente il metodo render() dell&#8217;oggetto form passando l&#8217;oggetto view o semplicemente fare echo sull&#8217;oggetto:</p>
<pre name="code" class="php">
  // 1
  echo $form->render($view);
  // 2
  echo $form;
</pre>
<p>Senza complicarci troppo le cose direi di utilizzare la seconda ed usare il seguente codice nella view</p>
<pre name="code" class="php">
&lt;?php echo $this->form ?&gt;
</pre>
<h2>I decorators</h2>
<p>Per renderizzare il contenuto dei form Zend Form usa i decorators. I decorators possono sostituire contenuto, aggiungerne prima o dopo dell&#8217;elemento. Di default ogni elemento del form contiene i seguenti decorators:</p>
<pre name="code" class="php">
  $username->addDecorators(array(
    'ViewHelper',
    'Errors',
    array('HtmlTag', array('tag' => 'dd')),
    array('Label', array('tag' => 'dt')),
  ));
</pre>
<p>il risultato su schermo sarà:</p>
<pre name="code" class="php">
[...]
&lt;dt&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;input type="text" value="" id="q" name="q"/&gt;&lt;/dd&gt;
[...]
</pre>
<p>con l&#8217;aggiunta dei tag UL LI per la gestione degli errori nel caso in cui ve ne fossero:</p>
<pre name="code" class="php">
[...]
&lt;dt&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;input type="text" value="" id="q" name="q"/&gt;&lt;/dd&gt;
&lt;ul class="errors"&gt;&lt;li&gt;Value is /empty, but a non-/empty value is required&lt;/li&gt;&lt;/ul&gt;
[...]
</pre>
<p>Questi possono essere completamente sostituiti con altri per avere ogni elemento personalizzato in base alle nostre esigenze.</p>
<h2>Validazione del form</h2>
<p>Dopo che il form è stato inviato bisogna controllare se questo è valido in base ai validatori immessi. Ogni elemento viene quindi ciclato e controllato. Per verificare la validità o meno del form usiamo il seguente codice:</p>
<pre name="code" class="php">
  if ($form->isValid($_POST)) {
      // success!
  } else {
      // failure!
  }
</pre>
<h2>Creare un form estendendo Zend_Form</h2>
<p>Nel caso dovessimo usare il nostro form in diversi punti dell&#8217;applicazione è necessario creare una classe per la sua definizione, classe che dovrà estendere Zend_Form. Creiamo ad esempio un form di ricerca, comprensivo di un campo di testo, una select ed il tasto di invio. Il nome della classe sarà My_Form_Search, dove &#8216;My&#8217; lo dovrete sostituire con il nome della vostra libreria ( la directory col nome del vostro progetto che dovreste avere in library, dove sono contenute le librerie di Zend ) &#8216;Form&#8217; è una subdirectory e Search è il nome della classe che definisce il form di ricerca.</p>
<p>In questo esempio semplicemente metteremo insieme sopra discusso. Il codice qui di seguito non è completo, lascio a voi l&#8217;onere di recuperare l&#8217;array &#8216;rows&#8217; che dovrà contenere le accoppiate id/nome da ciclare per la generazione della select.</p>
<pre name="code" class="php">
  class My_Form_Search extends Zend_Form
  {
    public function init()
    {
      // Recuperare le coppie id/nome per essere ciclate ed inserite come option nella select, per esempio
      $rows = [ your code ]

      $queryString = new Zend_Form_Element_Text('q');
      $queryString->class = 'inputText';
      $queryString->setLabel('Cerca ')
          ->setDecorators(array(
            array('ViewHelper',
                  array('helper' => 'formText')),
            array('Label',
                  array('class' => 'label')),
            'Errors',
          ));
      $queryString->addValidator('alnum')
                  ->addValidator('regex', false, array('/^[a-z]+/'))
                  ->addValidator('stringLength', false, array(1, 20))
                  ->setRequired(true)
                  ->addFilter('StringToLower');

      $categorySelect = new Zend_Form_Element_Select('c');
      $categorySelect->setLabel('Categoria ');
      $categorySelect->addMultiOption('0', 'TUTTE');
      if(!empty($rows)){
        foreach($rows AS $cat){
          $categorySelect->addMultiOption($cat->category_url, $cat->category_name);
        }
      }
      $categorySelect->setDecorators(array(
        array('ViewHelper'),
        array('Label', array('class' => 'label'))
      ));

      $submit = new Zend_Form_Element_Submit('go');
      $submit->class = 'inputSubmit';
      $submit->setDecorators(array(
        array('ViewHelper')
      ));

      $this->addElements(array(
        $queryString,
        $categorySelect,
        $submit
      ));

      $this->setDecorators(array(
        'FormElements',
        'Fieldset',
        'Form'
      ));
    }
  }
</pre>
<p>Si conclude qui questo articolo sperando che vi sia stato di aiuto come introduzione al componente Zend_Form.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
