A menudo se declara en el esquema un campo como string (texto) cuando en la práctica va a ser una clave de un conjunto de valores. ¿Por qué no lo ponemos en el esquema como ‘type: Enum’? Por ejemplo porque no sabemos, en principio, cuales son los valores que se van a guardar ahí.
En ese caso el filtro no pondrá un desplegable con los valores, lógicamente, sino un input[type=text].
Si posteriormente queremos que en el filtro aparezcan los valores en forma de desplegable hacemos algo como esto:
$choices = array_merge(array('' => ''), <array_con_valores>); $this->widgetSchema['myField'] = new sfWidgetFormSelect(array('choices' => $choices, 'multiple' => false));
Pues bien, esto mostrará el filtro tal y como lo queremos, pero no funcionará. ¿Qué falta? Pues que le digamos al filtro que tiene que filtrar por un conjunto de claves:
public function getFields() { return array('myField' => 'Enum') + parent::getFields(); }
Es importante el orden, porque al existir ya ‘myField’ en el esquema, si hacemos la unión de los arrays al revés el valor recibido en el padre pisará el nuestro.
Estoy viendo y leyendo mucho últimamente, que en lugar de incluir las bibliotecas de jQuery y jQueryUI (y esto es aplicable al resto de bibliotecas disponibles) en tu propio servidor, es mejor alternativa utilizar los repositorios similares a los ofrecidos por Google (o el de Google).
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.8/jquery.min.js"></script>
¿Que por qué? Pues he recopilado tres ventajas y un inconveniente.
Las ventajas son:
Desventajas:
* Cuando encuentre tiempo escribiré sobre cómo solucionar este «problema»
UPDATE: La URL ha cambiado a (y no solo por el número de versión) https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js. Lo cual me hace pensar que esos cambios en la URL son nuevos problemas, y gordos.
Comentarios recientes