Rodrigo Borrego Bernabé - Freelance Software Developer



Filtrando en symfony con un selector los campos de texto

Category : Programación, Symfony · (5) Comments · by Dec 16th, 2010

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.

Utiliza CDN al incluir jQuery

Category : breves, Programación · No Comments · by Dec 14th, 2010

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:

  • Aumenta la probabilidad de que los usuarios tengan el archivo en caché (y cuanto más gente utilice esta técnica mayor probabilidad)
  • El navegador puede paralelizar la descarga de este archivo con otros al estar en distintos dominios
  • Si tu público principal está en EEUU y tu hosting en Europa los usuarios de allá se beneficiarán de mayor velocidad de descarga.

Desventajas:

  • Si Google no está accesible (no pienses en caidas de la gran G, piensa en ubicaciones donde el dominio google.com y otros asociados están bloqueados) nos quedamos sin jQuery*.

* 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.