Development

Documentation/it_IT/book/forms/01-Form-Creation (diff)

You must first sign up to be able to contribute.

Changes between Version 1 and Version 2 of Documentation/it_IT/book/forms/01-Form-Creation

Show
Ignore:
Author:
garak (IP: 85.18.214.242)
Timestamp:
10/29/08 12:24:47 (8 years ago)
Comment:

corrette tabelle e altre formattazioni

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/it_IT/book/forms/01-Form-Creation

    v1 v2  
    187187>Quando usiamo il metodo `setWidgets()`, symfony crea un oggetto `sfWidgetFormSchema`. Questo oggetto è un widget che consente di rappresentare un insieme di widget. Nella nostra form `ContactForm`, abbiamo chiamato il metodo `setWidgets()`. Ciò è equivalente al seguente codice: 
    188188> 
    189 >    $this->setWidgetSchema(new sfWidgetFormSchema(array( 
    190 >      'name'    => new sfWidgetFormInput(), 
    191 >      'email'   => new sfWidgetFormInput(), 
    192 >      'message' => new sfWidgetFormTextarea(), 
    193 >    ))); 
    194 > 
    195 >    // quasi equivalente a : 
     189>    $this->setWidgetSchema(new sfWidgetFormSchema(array( 
     190>      'name'    => new sfWidgetFormInput(), 
     191>      'email'   => new sfWidgetFormInput(), 
     192>      'message' => new sfWidgetFormTextarea(), 
     193>    ))); 
     194> 
     195>    // quasi equivalente a : 
    196196>      
    197 >    $this->widgetSchema = new sfWidgetFormSchema(array( 
    198 >      'name'    => new sfWidgetFormInput(), 
    199 >      'email'   => new sfWidgetFormInput(), 
    200 >      'message' => new sfWidgetFormTextarea(), 
    201 >    )); 
     197>    $this->widgetSchema = new sfWidgetFormSchema(array( 
     198>      'name'    => new sfWidgetFormInput(), 
     199>      'email'   => new sfWidgetFormInput(), 
     200>      'message' => new sfWidgetFormTextarea(), 
     201>    )); 
    202202> 
    203203>Il metodo `setLabels()` è applicato ad un insieme di widget inclusi nell'oggetto `widgetSchema`. 
    337337Quando si visualizza il sorgente HTML della form, puoi vedere che symfony ha generato un attributo `name` che dipende non solo dal nome e dal formato del campo, ma anche dall'attributo `id`. L'attributo `id` viene creato automaticamente dal nome sostituendo i caratteri non consentiti con dei trattini bassi (_): 
    338338 
    339 ------------------------------------------------- 
    340 |Nome    | Attributo `name`  | Attributo `id`   | 
    341 ---------+-------------------+------------------- 
    342 |name    |contact[name]            | contact_name     | 
    343 |email   |contact[email]           | contact_email    | 
    344 |message |      contact[message] |      contact_message | 
    345 ------------------------------------------------- 
     339<table> 
     340  <tr> 
     341    <th>Nome</th> 
     342    <th>Attributo `name`</th> 
     343    <th>Attributo `id`</th> 
     344  </tr> 
     345  <tr> 
     346    <td>name</td> 
     347    <td>contact[name]</td> 
     348    <td>contact_name</td> 
     349  </tr> 
     350  <tr> 
     351    <td>email</td> 
     352    <td>contact[email]</td> 
     353    <td>contact_email</td> 
     354  </tr> 
     355  <tr> 
     356    <td>message</td> 
     357    <td>contact[message]</td> 
     358    <td>contact_message</td> 
     359  </tr> 
     360</table> 
    346361 
    347362### Un'altra soluzione 
     363 
     364 
    348365 
    349366In questo esmepio, abbiamo usato due azioni per gestire la form: `index` per la visualizzazione, `submit` per l'invio. Poiché la form è visualizzata tramite il metodo `GET` e l'invio tramite il metodo `POST`, possiamo anche fondere i due metodi nel metodo `index`, come mostrato nel Listato 1-8. 
    407424> PHP non fa alcuna distinzione tra array semplici e associative, quindi l'array che abbiamo usato per la lista dei `subject` è identica al codice sequente: 
    408425> 
    409 >    $subjects = array(0 => 'Subject A', 1 => 'Subject B', 2 => 'Subject C'); 
     426>    $subjects = array(0 => 'Subject A', 1 => 'Subject B', 2 => 'Subject C'); 
    410427> 
    411428> Il widget generato prende la chiave dell'array come valore dell'attributo del tag `option`, e il relativo valore come contenuto del tag: 
    412429> 
    413430> 
    414 >    <select name="contact[subject]" id="contact_subject"> 
    415 >      <option value="0">Subject A</option> 
    416 >      <option value="1">Subject B</option> 
    417 >      <option value="2">Subject C</option> 
    418 >    </select> 
     431>    <select name="contact[subject]" id="contact_subject"> 
     432>      <option value="0">Subject A</option> 
     433>      <option value="1">Subject B</option> 
     434>      <option value="2">Subject C</option> 
     435>    </select> 
    419436> 
    420437> 
    421438> Per poter cambiare gli attributi `value`, dobbiamo definire le chiavi dell'array: 
    422439> 
    423 >    $subjects = array('A' => 'Subject A', 'B' => 'Subject B', 'C' => 'Subject C'); 
     440>    $subjects = array('A' => 'Subject A', 'B' => 'Subject B', 'C' => 'Subject C'); 
    424441> 
    425442> Che genere il template HTML: 
    426443> 
    427 >    <select name="contact[subject]" id="contact_subject"> 
    428 >      <option value="A">Subject A</option> 
    429 >      <option value="B">Subject B</option> 
    430 >      <option value="C">Subject C</option> 
    431 >    </select> 
     444>    <select name="contact[subject]" id="contact_subject"> 
     445>      <option value="A">Subject A</option> 
     446>      <option value="B">Subject B</option> 
     447>      <option value="C">Subject C</option> 
     448>    </select> 
    432449      
    433450Il widget `sfWidgetFormSelect`, come tutti i widget, prende una lista di opzioni come primo argomento. Un'opzione può essere obbligatoria od opzionale. `sfWidgetFormSelectwidget` ha un'opzione obbligatoria, `choiches`. Ecco le opzioni disponibili per i widget che abbiamo già usato: 
    434451 
    435 ------------------------------------------------------------------------------ 
    436 | Widget               | Opzioni obbligatorie | Opzioni addizionali          | 
    437 -----------------------+----------------------+------------------------------- 
    438 | sfWidgetFormInput    | -                    | type (default to text)       | 
    439 -----------------------+----------------------+------------------------------- 
    440 |                      |                      | is_hidden (default to false) | 
    441 -----------------------+----------------------+------------------------------- 
    442 | sfWidgetFormSelect   | choices              | multiple (default to false)  | 
    443 -----------------------+----------------------+------------------------------- 
    444 | sfWidgetFormTextarea | -                    | -                            | 
    445 ------------------------------------------------------------------------------ 
     452<table> 
     453  <tr> 
     454    <th>Widget</th> 
     455    <th>Opzioni obbligatorie</th> 
     456    <th>Opzioni addizionali</th> 
     457  </tr> 
     458  <tr> 
     459    <td>sfWidgetFormInput</td> 
     460    <td>-</td> 
     461    <td>type (default to text)</td> 
     462  </tr> 
     463  <tr> 
     464    <td></td> 
     465    <td></td> 
     466    <td>is_hidden (default to false)</td> 
     467  </tr> 
     468  <tr> 
     469    <td>sfWidgetFormSelect</td> 
     470    <td>choices</td> 
     471    <td>multiple (default to false)</td> 
     472  </tr> 
     473  <tr> 
     474    <td>sfWidgetFormTextarea</td> 
     475    <td>-</td> 
     476    <td>-</td> 
     477  </tr> 
     478</table> 
    446479 
    447480>**TIP** 
    525558>Ecco un esempio di tale protezione: 
    526559> 
    527 >    [php] 
    528 >    $emailWidget = new sfWidgetFormInput(array(), array( 
    529 >      'value' => 'Hello "World!"', 
    530 >      'class' => '<script>alert("foo")</script>', 
    531 >    )); 
     560>    [php] 
     561>    $emailWidget = new sfWidgetFormInput(array(), array( 
     562>      'value' => 'Hello "World!"', 
     563>      'class' => '<script>alert("foo")</script>', 
     564>    )); 
    532565>      
    533 >    // HTML generato 
    534 >    <input 
    535 >      value="Hello &quot;World!&quot;" 
    536 >      class="&lt;script&gt;alert(&quot;foo&quot;)&lt;/script&gt;" 
    537 >      type="text" name="contact[email]" id="contact_email" 
    538 >    /> 
     566>    // HTML generato 
     567>    <input 
     568>      value="Hello &quot;World!&quot;" 
     569>      class="&lt;script&gt;alert(&quot;foo&quot;)&lt;/script&gt;" 
     570>      type="text" name="contact[email]" id="contact_email" 
     571>    /> 
    539572 
    540573}}}