Author: garak Date: 2010-03-11 17:25:19 +0100 (Thu, 11 Mar 2010) New Revision: 28486
Modified: doc/branches/1.4/more-with-symfony/it/02-Advanced-Routing.markdown doc/branches/1.4/more-with-symfony/it/03-Enhance-your-Productivity.markdown doc/branches/1.4/more-with-symfony/it/06-Advanced-Forms.markdown doc/branches/1.4/more-with-symfony/it/08-Advanced-Doctrine-Usage.markdown doc/branches/1.4/more-with-symfony/it/09-Doctrine-Form-Inheritance.markdown doc/branches/1.4/more-with-symfony/it/12-Developing-for-Facebook.markdown doc/branches/1.4/more-with-symfony/it/14-Playing-with-Symfony-Config-Cache.markdown doc/branches/1.4/more-with-symfony/it/15-Working-with-the-Symfony-Community.markdown Log: [1.4][doc-it] minor fixes Modified: doc/branches/1.4/more-with-symfony/it/02-Advanced-Routing.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/02-Advanced-Routing.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/02-Advanced-Routing.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -149,7 +149,7 @@ Come funziona il sistema delle rotte ------------------------------------ -Una "rotta" in symfony, è un oggetto di tipo ~`sfRoute`~ che fa due importanti +Una "rotta" in symfony è un oggetto di tipo ~`sfRoute`~, che fa due importanti lavori: * Generare un URL. Per esempio, se si passa al metodo `page_show` un parametro @@ -725,7 +725,7 @@ moduli dell'area di backend (ad esempio in modo che ogni `Client` possa gestire le proprie gallerie di foto). -Un altro motivo comune per creare una collezione personalizzata di rotte, è quello +Un altro motivo comune per creare una collezione personalizzata di rotte è quello di aggiungere rotte usate di frequente. Per esempio, supponiamo che un progetto impieghi molti modelli, ciascuno con una colonna `is_active`. Nell'area di amministrazione, ci deve essere un modo facile per attivare/disattivare il Modified: doc/branches/1.4/more-with-symfony/it/03-Enhance-your-Productivity.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/03-Enhance-your-Productivity.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/03-Enhance-your-Productivity.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -311,7 +311,7 @@ ### API online -Il modo più veloce per trovare la documentazione di una classe o di un metodo, è +Il modo più veloce per trovare la documentazione di una classe o di un metodo è quello di navigare online nelle [API](http://www.symfony-project.org/api/1_3/). Di maggiore interesse è il motore di ricerca integrato nelle API. Esso consente Modified: doc/branches/1.4/more-with-symfony/it/06-Advanced-Forms.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/06-Advanced-Forms.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/06-Advanced-Forms.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -7,7 +7,7 @@ necessari a visualizzare e validare i form in modo semplice e orientato agli oggetti. Grazie alle classi ~`sfFormDoctrine`~ e ~`sfFormPropel`~ disponibili per ciascun ORM, il framework dei form può facilmente visualizzare e salvare form che fanno -riferimento allo strato dei dati. +riferimento al livello dei dati. Le situazioni del mondo reale, tuttavia, spesso richiedono agli sviluppatori di personalizzare ed estendere i form. In questo capitolo vengono presentati e risolti Modified: doc/branches/1.4/more-with-symfony/it/08-Advanced-Doctrine-Usage.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/08-Advanced-Doctrine-Usage.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/08-Advanced-Doctrine-Usage.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -8,7 +8,7 @@ In questa sezione verrà mostrato come è possibile scrivere un comportamento utilizzando Doctrine 1.2. Verrà creato un esempio che consenta di mantenere -facilmente in cache un contatore di relazioni in modo tale che non sia +facilmente in cache un contatore di relazioni, in modo tale che non sia necessario tutte le volte fare la query per ottenere il conteggio. La funzionalità è molto semplice. Si vuole gestire un contatore per tutte le @@ -17,8 +17,8 @@ ### Lo schema -Questo è lo schema che si userà per iniziare. Successivamente verrà modificato -aggiungendo la definizione actAs per il comportamento che si sta per scrivere: +Questo è lo schema che si userà per iniziare. Successivamente verrà modificato, +aggiungendo la definizione `actAs` per il comportamento che si sta per scrivere: [yml] # config/doctrine/schema.yml @@ -47,10 +47,9 @@ ### Il template -In primo luogo è necessario scrivere una classe figlia Doctrine_Template che sarà +In primo luogo, è necessario scrivere una classe figlia Doctrine_Template, che sarà responsabile di aggiungere le colonne al modello che memorizzerà i conteggi. - Si può inserire questo codice in una delle cartelle `lib/` del progetto e symfony sarà in grado di caricarlo automaticamente @@ -67,7 +66,7 @@ } } -Modificare il modello `Post` aggiungendo ActAs, con il comportamento `CountCache`: +Modificare il modello `Post` aggiungendo `ActAs`, con il comportamento `CountCache`: [yml] # config/doctrine/schema.yml @@ -76,13 +75,13 @@ CountCache: ~ # ... -Ora che il modello Post utilizza il comportamento CountCache, cerchiamo di +Ora che il modello `Post` utilizza il comportamento `CountCache`, cerchiamo di capire che cosa succede con il suo utilizzo. Quando le informazioni di mapping per un modello sono istanziate, eventuali comportamenti collegati ottengono l'invocazione dei metodi `setTableDefinition()` -e `setUp()`. Proprio come si ha nella classe `BasePost` in `lib/model/doctrine/base/BasePost.class.php`. -Questo permette di aggiungere cose a qualsiasi modello in uno stile plug n'play. +e `setUp()`, proprio come si ha nella classe `BasePost` in `lib/model/doctrine/base/BasePost.class.php`. +Questo permette di aggiungere cose a qualsiasi modello in uno stile plug'n'play. Queste "cose" possono essere colonne, relazioni, ascoltatori di eventi, ecc. Ora che si è compreso un po' di più su quello che sta succedendo, bisogna fare @@ -132,12 +131,12 @@ foreignAlias: Posts # ... -Ora il modello `Thread` ha una colonna `num_posts` che verrà tenuta aggiornata +Ora il modello `Thread` ha una colonna `num_posts`, che verrà tenuta aggiornata con il numero di post che ha ogni thread. ### L'ascoltatore di eventi -Il passo successivo per costruire il comportamento, è quello di scrivere un +Il passo successivo per costruire il comportamento è quello di scrivere un ascoltatore per registrare gli eventi, che sarà incaricato di tenere il conteggio aggiornato quando si inserisce un nuovo record, si cancella un record o si cancellano record con dei batch DQL: @@ -155,8 +154,8 @@ } } -Prima di andare avanti bisogna definire la classe `CountCacheListener` che -estende `Doctrine_Record_Listener`. Essa accetta un array di opzioni che sono +Prima di andare avanti, bisogna definire la classe `CountCacheListener`, che +estende `Doctrine_Record_Listener`. Essa accetta un array di opzioni, che sono semplicemente inoltrate all'ascoltatore dal template: [php] @@ -182,7 +181,7 @@ * **postDqlUpdate()**: Decrementa il conteggio quando i record sono cancellati per mezzo di una delete DQL. -In primo luogo definire il metodo `postInsert()`: +In primo luogo, definire il metodo `postInsert()`: [php] class CountCacheListener extends Doctrine_Record_Listener @@ -208,7 +207,7 @@ } Il codice sopra incrementerà di uno i conteggi per tutte le relazioni configurate -mediante una query DQL UPDATE quando un nuovo oggetto come il seguente è inserito: +mediante una query DQL UPDATE, quando un nuovo oggetto come il seguente è inserito: [php] $post = new Post(); @@ -246,7 +245,7 @@ } } -Il metodo `postDelete()` di cui sopra, è quasi identico a `postInsert()`, +Il metodo `postDelete()` di cui sopra è quasi identico a `postInsert()`, l'unica differenza è che viene decrementata la colonna `num_posts` di `1` invece di incrementarla. Gestisce il seguente codice, nel caso si volesse cancellare il record `$post` che è stato salvato in precedenza: @@ -254,7 +253,7 @@ [php] $post->delete(); -L'ultimo pezzo del puzzle, è quello di gestire il caso in cui i record vengono +L'ultimo pezzo del puzzle è quello di gestire il caso in cui i record vengono cancellati usando un update DQL. Si può risolverlo utilizzando il metodo `preDqlDelete()`: @@ -289,7 +288,7 @@ } } -Il codice sopra clona la query `DQL DELETE` e la trasforma in una `SELECT` che +Il codice sopra clona la query `DQL DELETE` e la trasforma in una `SELECT`, che permette di recuperare gli `ID` che verranno cancellati, in modo che sia possibile aggiornare i contatori dei record che sono stati cancellati. @@ -637,18 +636,18 @@ usare queste funzionalità per implementare una cache tarata finemente sulle query di Doctrine. -Scrivere un idratatore per Doctrine +Scrivere un idratante per Doctrine ----------------------------------- Una delle caratteristiche chiave di Doctrine è la capacità di trasformare un oggetto `Doctrine_Query` in vari tipi di strutture di risultati. Questo è il -lavoro dell'idratatore di Doctrine, ma fino a Doctrine 1.2, gli idratatori erano +lavoro dell'idratante di Doctrine, ma, fino a Doctrine 1.2, gli idratatori erano tutti cablati nel codice e non utilizzabili dagli sviluppatori per personalizzarli. -Ora che questo è cambiato è possibile scrivere un idratatore personalizzato e +Ora che questo è cambiatoi, è possibile scrivere un idratante personalizzato e creare qualunque struttura dati che si desidera, in base ai dati del database che si vogliono ottenere, quando si esegue una istanza di `Doctrine_Query`. -In questo esempio verrà costruito un idratatore estremamente semplice e facile da +In questo esempio verrà costruito un idratante estremamente semplice e facile da capire, nonché molto utile. Esso consente di selezionare due colonne e idratare i dati in un array dove la prima colonna selezionata è la chiave e la seconda colonna selezionata è il valore. @@ -683,9 +682,9 @@ $ php symfony doctrine:build --all --and-load -### Scrivere un idratatore +### Scrivere un idratante -Per scrivere un idratatore tutto quello che bisogna fare è scrivere una nuova +Per scrivere un idratante tutto quello che bisogna fare è scrivere una nuova classe che estende `Doctrine_Hydrator_Abstract` e implementa un metodo `hydrateResultSet($stmt)`. Questo riceve l'istanza `PDOStatement` usata per eseguire la query. Si può utilizzare questa dichiarazione per ottenere i @@ -727,14 +726,14 @@ } } -Bene è stato facile! Il codice dell'idratatore è finito e fa esattamente quello che +Bene è stato facile! Il codice dell'idratante è finito e fa esattamente quello che si voleva, ora non resta che usarlo! -### Utilizzare un idratatore +### Utilizzare un idratante -Per utilizzare e testare l'idratatore, prima è necessario registrarlo su Doctrine +Per utilizzare e testare l'idratante, prima è necessario registrarlo su Doctrine in modo che quando vengono eseguite delle query, Doctrine sia a conoscenza della -classe idratatore che è stata scritta. +classe idratante che è stata scritta. Per farlo, bisogna registrarlo nell'istanza `Doctrine_Manager` di `ProjectConfiguration`: @@ -752,7 +751,7 @@ } } -Ora che l'idratatore è registrato, si è in grado di utilizzarlo con le +Ora che l'idratante è registrato, si è in grado di utilizzarlo con le istranze di `Doctrine_Query`. Ecco un esempio: [php] Modified: doc/branches/1.4/more-with-symfony/it/09-Doctrine-Form-Inheritance.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/09-Doctrine-Form-Inheritance.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/09-Doctrine-Form-Inheritance.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -270,14 +270,14 @@ Il resto del capitolo spiegherà come usare l'ereditarietà delle tabelle di Doctrine e come trarne vantaggio in diverse situazioni in modelli, form, filtri e generatori -di amministrativo. Esempi di studi reali aiuteranno a capire meglio come l'ereditarietà +di amministrazione. Esempi di studi reali aiuteranno a capire meglio come l'ereditarietà funziona con symfony, in modo che sia possibile usarla per le proprie esigenze. ### Introduzione allo studio di un caso reale In questo capitolo saranno presentati diversi studi di casi reali per mostrare i vantaggi dell'approccio dell'ereditarietà delle tabelle di Doctrine -nei diversi livelli: `modelli`, `form`, `filtri` e `generatore di amministrativo`. +nei diversi livelli: `modelli`, `form`, `filtri` e `generatore di amministrazione`. Il primo esempio viene da un'applicazione intranet sviluppata da Sensio per una ben nota società francese. Essa mostra come l'ereditarietà delle tabelle di @@ -289,11 +289,11 @@ per gestire file binari. Infine il terzo esempio mostrerà come utilizzare l'ereditarietà delle tabelle -con il generatore di amministrativo e come renderlo più flessibile. Lo studio del caso +con il generatore di amministrazione e come renderlo più flessibile. Lo studio del caso mostrato, sarà basato sul primo esempio. -### Ereditarietà delle tabelle nello strato modello +### Ereditarietà delle tabelle nel livello del modello Similmente al concetto di programmazione orientata agli oggetti, ~l'ereditarietà delle tabelle~ incoraggia la condivisione dei dati. Di conseguenza, essa consente la condivisione di proprietà @@ -303,18 +303,18 @@ #### Il problema #### -Molte applicazioni web sono vincolate da dati "~referenziali~" su cui lavorare. -Generalmente un referenziale è un piccolo insieme di dati rappresentati da una semplice -tabella contenente almeno due campi (ad esempio `id` e `label`). In alcuni casi -il referenziale contiene dati aggiuntivi come un flag `is_active` o `is_default`. -Recentemente in Sensio questo è stato il caso di una applicazione per un cliente. +Molte applicazioni web sono vincolate da dati "referenziali" su cui lavorare. +Generalmente, un referenziale è un piccolo insieme di dati rappresentati da una semplice +tabella contenente almeno due campi (ad esempio `id` e `label`). In alcuni casi, +il referenziale contiene dati aggiuntivi, come un flag `is_active` o `is_default`. +Recentemente, in Sensio, questo è stato il caso di una applicazione per un cliente. Il cliente voleva gestire una grossa quantità di dati da utilizzare per le principali form e viste dell'applicazione. Tutte queste tabelle referenziali sono state costruite intorno allo stesso modello di base: `id`, `label`, `position` e `is_default`. Il campo `position` consente di classificare i record grazie a una funzionalità ajax drag and drop. Il campo `is_default` rappresenta un flag -che indica se un record, quando è utilizzato con un box select html, deve essere +che indica se un record, quando è utilizzato con un select html, deve essere impostato come "selezionato" per impostazione predefinita. #### La soluzione #### @@ -370,11 +370,11 @@ * `sfReferentialProductTypeTable`: gestisce la tabella `sf_referential_product_type`. -L'eplorazione del codice generato, mostra che entrambe le classi base delle +L'eplorazione del codice generato mostra che entrambe le classi base delle classi dei modelli `sfReferentialContractType` e `sfReferentialProductType` ereditano dalla classe `sfReferential`. Così, tutti i metodi protetti e pubblici -(includendo le proprietà) inseriti nella classe `sfReferential`, saranno condivisi -tra le due sottoclassi e se necessario potranno essere sovrascritti. +(includendo le proprietà) inseriti nella classe `sfReferential` saranno condivisi +tra le due sottoclassi e, se necessario, potranno essere sovrascritti. Questo è esattamente l'obiettivo previsto. Ora la classe `sfReferential` può contenere metodi per gestire tutti i dati referenziali, per esempio: @@ -460,7 +460,7 @@ essere duplicato in ogni sottoclasse referenziale. Questo approccio non sarebbe DRY, specialmente con una applicazione avente una dozzina di tabelle referenziali. -### Ereditarietà delle tabelle nello strato dei form ### +### Ereditarietà delle tabelle nel livello dei form ### Continuiamo la visita guidata dei vantaggi dell'ereditarietà delle tabelle di Doctrine. La sezione precedente ha dimostrato come questa caratteristica può essere molto utile per @@ -645,11 +645,11 @@ Allo stesso modo, sia `VideoFormFilter` che `PDFFormFilter` possono condividere gli stessi metodi personalizzati nella classe `FileFormFilter`. -### Ereditarietà di tabelle a livello di generatore di amministrativo ### +### Ereditarietà di tabelle a livello di generatore di amministrazione ### É giunto il momento di scoprire come sfruttare l'ereditarietà delle tabelle di Doctrine -e una delle nuove funzionalità del generatore di amministrativo: la definizione della -__classe base delle azioni__. Il generatore di amministrativo è una delle funzionalità più +e una delle nuove funzionalità del generatore di amministrazione: la definizione della +__classe base delle azioni__. Il generatore di amministrazione è una delle funzionalità più apprezzate di symfony a partire dalla versione 1.0. Nel novembre 2008, symfony ha introdotto il nuovo sistema di generatore dell'amministrazione @@ -787,7 +787,7 @@ $ php symfony plugin:publish-assets La parte seguente spiega come costruire tutti i moduli di backend, grazie agli -strumenti del generatore di amministrativo e come beneficiare di una nuova funzionalità +strumenti del generatore di amministrazione e come beneficiare di una nuova funzionalità integrata. #### Configurare il backend @@ -801,7 +801,7 @@ $ php symfony generate:app backend -Anche se il generatore di amministrativo è un buon strumento, lo sviluppatore è +Anche se il generatore di amministrazione è un buon strumento, lo sviluppatore è sempre stato costretto a duplicare il codice in comune tra i due moduli generati. Grazie a symfony 1.3 il task ~`doctrine:generate-admin`~ ora introduce una nuova opzione ~`--actions-base-class`~ che permette di definire la classe del modulo base delle azioni. @@ -825,7 +825,7 @@ $ php symfony doctrine:generate-admin --module=shopping --actions-base-class=sfSortableModuleActions backend sfShoppingItem $ php symfony doctrine:generate-admin --module=todo --actions-base-class=sfSortableModuleActions backend sfTodoItem -Il generatore di amministrativo genera i moduli in due cartelle separate. La prima +Il generatore di amministrazione genera i moduli in due cartelle separate. La prima è ovviamente `apps/backend/modules`, ma la maggioranza dei file dei moduli generati sono posizionati nella cartella `cache/backend/dev/modules`. I file posizionati in questo posto sono rigenerati ogni volta che la cache viene cancellata o quando @@ -833,7 +833,7 @@ >**Note** >L'esplorazione dei file memorizzati nella cache è una buona pratica per >capire come ->symfony e il generatore di amministrativo lavorano sotto il cofano. Di conseguenza, +>symfony e il generatore di amministrazione lavorano sotto il cofano. Di conseguenza, >la nuova classe ereditata `sfSortableModuleActions` può essere trovata nei >file >`cache/backend/dev/modules/autoShopping/actions/actions.class.php` >e `cache/backend/dev/modules/autoTodo/actions/actions.class.php`. Per @@ -856,7 +856,7 @@ su una classe del modello. Il primo passo è quello di due nuove rotte in grado di spostare un record in alto o in basso -nell'elenco. Dal momento che il generatore di amministrativo usa ~`sfDoctrineRouteCollection`~, +nell'elenco. Dal momento che il generatore di amministrazione usa ~`sfDoctrineRouteCollection`~, le nuove rotte possono facilmente essere dichiarate e attaccate ad esso nel file `config/generator.yml` di entrambi i moduli: @@ -1003,7 +1003,7 @@ Per lavorare, il visualizzatore dell'elenco di ogni modulo deve includere il frammento JavaScript ed entrambe le tabelle hanno bisogno di un attributo `id`. Come tutti i -template del generatore di amministrativo. Siccome nel generatore di amministrativo +template del generatore di amministrazione. Siccome nel generatore di amministrazione i template e i partial possono essere sovrascritti, il file `_list.php`, presente nella cache per impostazione predefinita, deve essere copiato in entrambi i moduli. @@ -1099,7 +1099,7 @@ /* ]]> */ </script> -Infine, creare i file `_list.php` sotto la cartella `templates/` di ciascun modulo, +Infine, creare nella cartella `templates/` di ciascun modulo i file `_list.php` , che contengano entrambi il seguente codice: [php] @@ -1148,7 +1148,7 @@ L'azione `executeMove()` richiede un metodo `getModel()` nella configurazione dell'oggetto. Implementare questo nuovo metodo in entrambe le classi -`todoGeneratorConfiguration` e `shoppingGeneratorConfiguration` come mostrato sotto: +`todoGeneratorConfiguration` e `shoppingGeneratorConfiguration`, come mostrato sotto: [php] <?php @@ -1176,7 +1176,7 @@ riga spostata viene rilasciata. Per realizzare questo, entrambi i moduli hanno bisogno di una rotta specifica per accedere alle loro corrispondenti azioni `move`. Di conseguenza, il file `apps/backend/config/routing.yml` può accogliere le due nuove -rotte come mostrato sotto: +rotte, come mostrato sotto: [php] <?php foreach (array('shopping', 'todo') as $module) : ?> @@ -1230,7 +1230,7 @@ La tabella HTML è ora pienamente funzionante. Le righe implementano il drag & drop e la nuova posizione di una riga è automaticamente salvata grazie ad una chiamata ajax. Con pochi pezzi di codice, l'usabilità del backend è stata ampiamente migliorata per -offrire all'utente finale una migliore esperienza. Il generatore di amministrativo è +offrire all'utente finale una migliore esperienza. Il generatore di amministrazione è abbastanza flessibile per essere esteso e personalizzato e inoltre lavora perfettamente con l'ereditarietà delle tabelle di Doctrine. Modified: doc/branches/1.4/more-with-symfony/it/12-Developing-for-Facebook.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/12-Developing-for-Facebook.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/12-Developing-for-Facebook.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -376,7 +376,7 @@ Naturalmente, per fare ciò l'applicazione deve essere configurata anche per Facebook Connect nelle impostazioni dello sviluppatore, anche se è -destinata esclusivamente ad usare FBML. Ma l'enorme vantaggio di fare questo, è +destinata esclusivamente ad usare FBML. Ma l'enorme vantaggio di fare questo è la possibilità di provare l'applicazione anche a livello locale. Se si sta creando una applicazione Facebook e si è pianificato l'utilizzo dei tag FBML, che è quasi inevitabile, l'unica soluzione per vedere il risultato è quello di mettere online il codice e vedere il Modified: doc/branches/1.4/more-with-symfony/it/14-Playing-with-Symfony-Config-Cache.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/14-Playing-with-Symfony-Config-Cache.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/14-Playing-with-Symfony-Config-Cache.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -3,7 +3,7 @@ *di Kris Wallsmith* -Uno dei miei obiettivi personali come sviluppatore di symfony, è quello di +Uno dei miei obiettivi personali, come sviluppatore di symfony, è quello di snellire il più possibile il flusso di lavoro su un determinato progetto. Anche se io posso conoscere sia dentro che fuori la base del nostro codice, questa non è una aspettativa ragionevole per tutto il team. Fortunatamente @@ -14,7 +14,7 @@ Le stringhe nei form -------------------- -Un eccellente esempio di questo, è il framework dei form di symfony. Il framework +Un eccellente esempio di questo è il framework dei form di symfony. Il framework dei form è un componente potente di symfony, che dà un grande controllo sui form, spostando la loro visualizzazione e convalida, in oggetti PHP. Questa è una manna per gli sviluppatori di applicazioni, perché significa che si possono incapsulare @@ -194,7 +194,7 @@ Utilizzare lo YAML ------------------ -Il modo più semplice per utilizzare questa configurazione YAML in ogni form, è +Il modo più semplice per utilizzare questa configurazione YAML in ogni form è caricarla in un array e ciclare attraverso ciascuna configurazione: [php] @@ -770,7 +770,7 @@ '<?php class Form'.$i.' extends BaseForm { }'); } -Ora si è pronti per lanciare alcuni benchmarks. Per i risultati che trovate cui +Ora si è pronti per lanciare alcuni benchmarks. Per i risultati che trovate qui sotto, è stato più volte eseguito il seguente comando [Apache](http://httpd.apache.org/docs/2.0/programs/ab.html) su un MacBook, finché non si è avuta una deviazione standard inferiore a 2ms. Modified: doc/branches/1.4/more-with-symfony/it/15-Working-with-the-Symfony-Community.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/it/15-Working-with-the-Symfony-Community.markdown 2010-03-11 15:59:26 UTC (rev 28485) +++ doc/branches/1.4/more-with-symfony/it/15-Working-with-the-Symfony-Community.markdown 2010-03-11 16:25:19 UTC (rev 28486) @@ -405,7 +405,7 @@ lingua madre, questo è il primo posto da visitare. È possibile che vi siano molti traduttori per una lingua, in questo caso è molto importante coordinare gli sforzi per non duplicare il lavoro svolto. La mailinglist di symfony dedicata -alla documentazione, è il luogo perfetto dove dare il via alle traduzioni. +alla documentazione è il luogo perfetto dove dare il via alle traduzioni. #### Aggiungere contenuti al wiki @@ -415,7 +415,7 @@ è possibile contribuire leggendo gli articoli esistenti, apportando correzioni, o aggiornandoli. Oltre ai nuovi articoli ne esistono di vecchi che contengono esempi datati, o che sono totalmente non aggiornati. Aiutare a mantenere puliti -i contenuti esistenti sul wiki, è un ottimo modo per rendere più semplice la ricerca +i contenuti esistenti sul wiki è un ottimo modo per rendere più semplice la ricerca da parte degli utenti che cercano i contenuti che fanno al caso loro. Per farsi un'idea del tipo di contenuti presenti sul wiki, o trarre un po' di -- You received this message because you are subscribed to the Google Groups "symfony SVN" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/symfony-svn?hl=en.
