Seguimos con symfony, 2 trasnochadas y dos monitores después
Cómo ha se habrán dado la lata con los dos artículos anteriores sobre symfony, he tenido que tragarme más de un par de trasnochadas mejorando una aplicación en symfony que debo sacar sí o sí esta semana.
Después de leer casi completo EL LIBRO y partes de la API, ya casi, casi, puedo decir que entiendo como funciona el bicho.
En primer lugar, todavía me parece muy razonable la forma en la cual estructuraron la capa "Control". No es nada del otro mundo desarrollarlo (es cosa de hacer un par de includes bien puestos en función del URL), pero el sistema de ruteo con las URL no está mal. Casi drupaliano :)
La capa Vista es un caos. Funciones que se sobreponen unas sobre otras, sin ninguna que se atreva a realizar el trabajo completo. Por ejemplo, copio verbatim todas las formas en las que se puede crear un select, según EL LIBRO. Y eso que faltan...
- // Dropdown list (select)
- echo select_tag('payment',
- '<option selected="selected">Visa</option>
- <option>Eurocard</option>
- <option>Mastercard</option>')
- => <select name="payment" id="payment">
- <option selected="selected">Visa</option>
- <option>Eurocard</option>
- <option>Mastercard</option>
- </select>
- // List of options for a select tag
- echo options_for_select(array('Visa', 'Eurocard', 'Mastercard'), 0)
- => <option value="0" selected="selected">Visa</option>
- <option value="1">Eurocard</option>
- <option value="2">Mastercard</option>
- // Dropdown helper combined with a list of options
- echo select_tag('payment', options_for_select(array(
- 'Visa',
- 'Eurocard',
- 'Mastercard'
- ), 0))
- => <select name="payment" id="payment">
- <option value="0" selected="selected">Visa</option>
- <option value="1">Eurocard</option>
- <option value="2">Mastercard</option>
- </select>
- // To specify option names, use an associative array
- echo select_tag('name', options_for_select(array(
- 'Steve' => 'Steve',
- 'Bob' => 'Bob',
- 'Albert' => 'Albert',
- 'Ian' => 'Ian',
- 'Buck' => 'Buck'
- ), 'Ian'))
- => <select name="name" id="name">
- <option value="Steve">Steve</option>
- <option value="Bob">Bob</option>
- <option value="Albert">Albert</option>
- <option value="Ian" selected="selected">Ian</option>
- <option value="Buck">Buck</option>
- </select>
- // Dropdown list with multiple selection (selected values can be an array)
- echo select_tag('payment', options_for_select(
- array('Visa' => 'Visa', 'Eurocard' => 'Eurocard', 'Mastercard' => 'Mastercard'),
- array('Visa', 'Mastercard'),
- ), array('multiple' => true)))
- => <select name="payment[]" id="payment" multiple="multiple">
- <option value="Visa" selected="selected">Visa</option>
- <option value="Eurocard">Eurocard</option>
- <option value="Mastercard">Mastercard</option>
- </select>
- // Drop-down list with multiple selection (selected values can be an array)
- echo select_tag('payment', options_for_select(
- array('Visa' => 'Visa', 'Eurocard' => 'Eurocard', 'Mastercard' => 'Mastercard'),
- array('Visa', 'Mastercard')
- ), 'multiple=multiple')
- => <select name="payment" id="payment" multiple="multiple">
- <option value="Visa" selected="selected">
- <option value="Eurocard">Eurocard</option>
- <option value="Mastercard" selected="selected">Mastercard</option>
- </select>
Horrendo... En Drupal, con theme("select") basta y sobra.... Sobre la capa Modelo ya hablamos, así que seguiré más rato, porque acaba de llegar mi mujer.
- 923 lecturas

Se te han olvidado los helpers Object, object_select_tag() que a su vez si usas doctrine estará sobreescrito en el plugin para Doctrine, el cual a su vez para personalizarlo y usar internacionalización (cosa que necesito) tendrás que volver a sobreescribirlo!, pan comido! jaja </ironía>
Juas. Verdad. Al final, cualquier pequeña modificación hace más cómodo escribir el select directo en HTML.
Enviar un comentario nuevo