Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/symfony/symfony1-docs
Browse files Browse the repository at this point in the history
  • Loading branch information
hidenorigoto committed Aug 31, 2010
2 parents 8351989 + 58cceb3 commit 607598f
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 28 deletions.
Expand Up @@ -49,7 +49,7 @@ Per ogni nuovo modulo, symfony crea una azione `index` predefinita. Questa si co
L'azione predefinita `index` non verrà usata in questo capitolo, quindi si può rimuovere il metodo `executeIndex()` dal file `actions.class.php` e cancellare il file `indexSuccess.php` dalla cartella `templates/`.

>**NOTE**
>Symfony mette a disposizione altri modi per creare un modulo oltre che da riga di comando. Uno di questi è quello di creare le cartelle e i file manualmente. In molti casi, le azioni e i template di un modulo hanno lo scopo di manipolare i dati di una determinata tabella. Essendo che il codice necessario per creare, recuperare, aggiornare ed eliminare record da una tabella è spesso lo stesso, symfony fornisce un meccanismo per generare tale codice.
>Symfony mette a disposizione altri modi per creare un modulo oltre che da riga di comando. Uno di questi è quello di creare le cartelle e i file manualmente. In molti casi, le azioni e i template di un modulo hanno lo scopo di manipolare i dati di una determinata tabella. Essendo il codice necessario per creare, recuperare, aggiornare ed eliminare record da una tabella spesso lo stesso, symfony fornisce un meccanismo per generare tale codice.
Figura 4-1 - La pagina index creata in modo predefinito

Expand Down Expand Up @@ -235,7 +235,7 @@ Listato 4-10 - Molti helper accettano opzioni come parametri
Ogni volta che si utilizza un helper di symfony che genera un tag HTML, è possibile inserire ulteriori attributi al tag (come l'attributo `class` nell'esempio del Listato 4-10) nelle opzioni. Questi attributi si possono anche scrivere nel modo "sporco e veloce" dell'HTML 4.0 (senza i doppi apici) e symfony li mostrerà con una formattazione XHTML. Questa è un'altra ragione per cui gli helper sono più veloci da scrivere rispetto all'HTML.

>**NOTE**
>Essendo che è necessaria una ulteriore analisi e trasformazione la sintassi con stringa è un po' più lenta della sintassi con gli array.
>Essendo necessaria una ulteriore analisi e trasformazione, la sintassi con stringa è un po' più lenta della sintassi con gli array.
Come tutti gli helper di symfony, gli helper per i link sono numerosi e hanno molte opzioni. Il Capitolo 9 li descrive in dettaglio.

Expand Down
6 changes: 3 additions & 3 deletions gentle-introduction/it/07-Inside-the-View-Layer.markdown
Expand Up @@ -428,21 +428,21 @@ Listato 7-15 - Inclusione di uno slot `'sidebar'` nel layout
<?php endif; ?>
</div>

Ciascun template ha la possibilità di definire i contenuti di uno slot (in realtà anche i partial sono in grado di farlo). Essendo che gli slot sono destinati a contenere codice HTML, symfony offre un modo conveniente per definirli: basta scrivere il codice dello slot tra l'helper `slot()` e `end_slot()`, come mostrato nel Listato 7-16.
Ciascun template ha la possibilità di definire i contenuti di uno slot (in realtà anche i partial sono in grado di farlo). Essendo gli slot destinati a contenere codice HTML, symfony offre un modo conveniente per definirli: basta scrivere il codice dello slot tra gli helper `slot()` e `end_slot()`, come mostrato nel Listato 7-16.

Listato 7-16 - Sovrascrivere il contenuto dello slot `'sidebar'` in un template

[php]
// ...

<?php slot('sidebar') ?>
<!-- codice per la barra laterale personalizzata per il template corrente-->
<!-- codice per la barra laterale personalizzata per il template corrente -->
<h1>Dettagli dell'utente</h1>
<p>nome: <?php echo $user->getNome() ?></p>
<p>email: <?php echo $user->getEmail() ?></p>
<?php end_slot() ?>

Il codice tra gli helper slot è eseguito nel contesto del template, quindi ha accesso a tutte le variabili che sono state definite nell'azione. Symfony metterà automaticamente il risultato dell'esecuzione del codice nell'oggetto response. Non verrà visualizzato nel template, ma reso disponibile per future chiamate `include_slot()` come quella mostrata nel Listato 7-14.
Il codice tra gli helper slot è eseguito nel contesto del template, quindi ha accesso a tutte le variabili che sono state definite nell'azione. Symfony metterà automaticamente il risultato dell'esecuzione del codice nell'oggetto response. Non verrà visualizzato nel template, ma reso disponibile per future chiamate `include_slot()`, come quella mostrata nel Listato 7-14.

Gli slot sono molto utili per definire zone che devono mostrare dei contenuti contestuali. Possono anche essere usati per aggiungere codice HTML al layout solo per certe azioni. Ad esempio, un template che mostra l'elenco delle ultime news potrebbe volere aggiungere un link a un feed RSS nella zona `<head>` del layout. Questo si può ottenere semplicemente aggiungendo uno slot 'feed'` nel layout e sovrascrivendolo nel template dell'elenco.

Expand Down
Expand Up @@ -297,7 +297,7 @@ Se si conosce la chiave primaria di un certo record usare il metodo `find()` del
[php]
$articolo = Doctrine_Core::getTable('Articolo')->find(7);

Il file `schema.yml` definisce il campo `id` come chiave primaria della tabella `blog_articolo`, quindi questo comando restituirà l'articolo che ha `id` 7. Essendo che è stata utilizzata la chiave primaria, sappiamo che verrà restituito solo un record; la variabile `$articolo` contiene un oggetto della classe `Articolo`.
Il file `schema.yml` definisce il campo `id` come chiave primaria della tabella `blog_articolo`, quindi questo comando restituirà l'articolo che ha `id` 7. Essendo stata utilizzata la chiave primaria, sappiamo che verrà restituito solo un record; la variabile `$articolo` contiene un oggetto della classe `Articolo`.

In alcuni casi, una chiave primaria piò essere costituita da più di una colonna. Per gestire questi casi, il metodo `find()` accetta parametri multipli, uno per ciascuna chiave primaria di colonna.

Expand Down
7 changes: 4 additions & 3 deletions gentle-introduction/it/17-Extending-Symfony.markdown
Expand Up @@ -164,7 +164,8 @@ Listato 17-4 - Gestire un evento del tipo "notificare finché"

In pratica, `notifyUntil()` aggiunge funzionalità di ereditarietà multipla, o meglio mixin (l'aggiunta di metodi da parte di classi esterne rispetto a una classe esistente), al PHP. Quindi ora si possono "iniettare" nuovi metodi agli oggetti che non si possono estendere atrtaverso l'ereditarietà. E questo avviene a runtime. Non si è più limitati dalle capacità orientate agli oggetti di PHP quando si utilizza symfony.

>**TIP**: Essendo che il primo ascoltatore che cattura un evento `notifyUntil()` impedisce ulteriori notifiche, bisogna prestare attenzione all'ordine con cui vengono eseguiti gli ascoltatori. Questo ordine corrisponde all'ordine in cui gli ascoltatori sono stati registrati - il primo a essere registrato, è il primo a essere eseguito. Nella pratica, i casi in cui questo potrebbe essere un problema sono rari. Se ci si rende conto che due ascoltatori sono in conflitto su un particolare evento, forse la classe dovrebbe notificare eventi diversi, per esempio uno all'inizio e uno alla fine dell'esecuzione del metodo. E se si utilizzano gli eventi per aggiungere nuovi metodi a una classe esistente, è meglio dare un nome appropriato a questi metodi, in modo che altre volte in cui si aggiungono metodi non si creino dei conflitti. Prefissare i nomi dei metodi con il nome della classe dell'ascoltatore è una buona pratica.
>**TIP**
>Poiché il primo ascoltatore che cattura un evento `notifyUntil()` impedisce ulteriori notifiche, bisogna prestare attenzione all'ordine con cui vengono eseguiti gli ascoltatori. Questo ordine corrisponde all'ordine in cui gli ascoltatori sono stati registrati - il primo a essere registrato, è il primo a essere eseguito. Nella pratica, i casi in cui questo potrebbe essere un problema sono rari. Se ci si rende conto che due ascoltatori sono in conflitto su un particolare evento, forse la classe dovrebbe notificare eventi diversi, per esempio uno all'inizio e uno alla fine dell'esecuzione del metodo. E se si utilizzano gli eventi per aggiungere nuovi metodi a una classe esistente, è meglio dare un nome appropriato a questi metodi, in modo che altre volte in cui si aggiungono metodi non si creino dei conflitti. Prefissare i nomi dei metodi con il nome della classe dell'ascoltatore è una buona pratica.
### Cambiare il valore di ritorno di un metodo

Expand Down Expand Up @@ -727,11 +728,11 @@ Listato 17-21 - Personalizzare l'azione di un plugin
> created_at:
> stripped_title: varchar(50)
>
>Essendo che il processo di fusione usa la tabella `phpName` come chiave, si può anche cambiare il nome della tabella di un plugin nel database, a condizione che si mantiene lo stesso `phpName` nello schema.
>Poiché il processo di fusione usa la tabella `phpName` come chiave, si può anche cambiare il nome della tabella di un plugin nel database, a condizione che si mantenga lo stesso `phpName` nello schema.
### Come scrivere un plugin

Solo i plugin pacchettizzati con PEAR possono essere installati con il task `plugin:install`. È bene ricordare che tali plugin possono essere distribuiti attraverso la sezione plugin di symfony, un canale PEAR, o un semplice file per il download. Quindi se si vuole scrivere un plugin, è meglio pubblicarlo come pacchetto PEAR che come semplice file di archivio. Inoltre, i plugin che utilizzano PEAR sono più facili da aggiornare, possono dichiarare dipendenze e fare il deploy in automatico delle risorse nella cartella `web/`.
Solo i plugin pacchettizzati con PEAR possono essere installati con il task `plugin:install`. È bene ricordare che tali plugin possono essere distribuiti attraverso la sezione plugin di symfony, un canale PEAR o un semplice file da scaricare. Quindi, se si vuole scrivere un plugin, è meglio pubblicarlo come pacchetto PEAR che come semplice file archivio. Inoltre, i plugin che utilizzano PEAR sono più facili da aggiornare, possono dichiarare dipendenze e fare il deploy in automatico delle risorse nella cartella `web/`.

#### Organizzazione dei file

Expand Down

0 comments on commit 607598f

Please sign in to comment.