Archivo para la categoría ‘Symfony’

10/12/11

Generar una ruta desde cualquier punto de nuestro proyecto

Es tán simple como utilizar nuestra ya conocido sfContext:


$url = sfContext::getInstance()->getRouting()->generate('route_name');

Éste método ya nos adjunta el controlador frontal, solo tenemos que concatenar al principo $_SERVER['SERVER_NAME'] para hacerla totalmente dinámica. Muy útil cuando queremos generar rutas tanto para dev como prod válidas.

09/11/11

Uso de helpers en cualquier parte de nuestro proyecto

loadHelpers, podemos utilizar los helpers en cualquier parte de nuestro proyecto realizando una previa carga de éstos mediante:

sfContext::getInstance()->getConfiguration()->loadHelpers('Debug','Other1','Other2');

Esto puede sernos de gran utilidad para, por ejemplo, formatear fechas y monedas dentro de las clases de nuestro modelo de datos.

02/11/11

Mover campos en los formularios

Podemos mover la posicion de los campos en un formaulario, muy util para la parte del backend mediante la instrucción:

$this->widgetSchema->moveField('campo1', sfWidgetFormSchema::AFTER, 'campo2');
18/10/11

Symfony, borrando atributos de usuario

Os dejo aquí unos pequeños trucos para poder manejar rapidamente los attributos de usuario.

//borrar un attributo
$user->getAttributeHolder()->remove('nombre');

//borrar todos los attributos.
$user->getAttributeHolder()->clear();

Iré extendiendo éste articulo con más información.

15/09/11

Creación de filtros personalizados en el admin con doctrine

Bueno, mucha gente desconoce el potencial que tenemos a la hora de crear nuestros propios filtros personalizados para el admin.

Podemos referenciar objetos y tablas externas desde otras para ofrecerle al usuario una experiencia de usuario mucho más confortable a la hora de utilizar nuetra aplicación.

Listado de pasos a seguir para crear un filtro personalizado:

  1. Añadir el nombre de nuestro widget de filtro personalizado al archivo generator.yml.
  2. Añadir nuestro widget al archivo [modelo]FormFilter.class.php.
  3. Crear nuestro query en el archivo [modelo]Table.class.php.
leer más…
15/09/11

Forzar uso de tablas utf-8 en symfony 1.4 y doctrine 1.2

Hace poco tuve un problema al usar la tarea doctrine:build en symfony 1.4 y doctrine 1.2. Cual fué mi sorpresa al ver que symfony me creaba todas las tablas de mysql con codificación latin1_general_ci en vez de utf8_general_ci.

Indagando un poco por internet encontré una buena manera de poder definir la creación de tablas a utf a nivel global de tu proyecto. Tenemos dos opciones, una a nivel de tablas mysql y otra a nivel de toda tu base de datos.

Para la primera podemos definir en nuestro schema.yml las tablas de la siguiente forma:

User:
  options:
    type: MyISAM
    collate: utf8_unicode_ci
    charset: utf8
  columns:
    username: string(255)
    password: string(255)

La segunda, mucho más cómoda, es definir a nivel global el manager doctrine en nuestro archivo ProjectConfiguration.class.php la siguiente función:

public function configureDoctrine(Doctrine_Manager $manager)
{
  $manager->setCollate('utf8_unicode_ci');
  $manager->setCharset('utf8');
}

No nos olvidemos de realizar un rebuild the nuestros modelos y ya estaremos listos para seguir trabajando.

22/06/11

Nos vemos en las jornadas Desymfony 1,2 y 3 de julio

jornadas desymfony 2011

Nos vemos el 1,2 y 3 de Julio en las jornadas desymfony 2011. Esperemos actualizarnos con el nuevo Symfony 2. Ya iré posteando como van resultando las jornadas y poniendo algunas imágenes.

22/06/11

Cargar el contexto en una tarea personalizada

Para poder acceder a cualquier funcionalidad de symfony desde una tarea debemos previamente cargar el contexto de nuestra aplicación y habilitar el acceso a base de datos con el siguiente código:

protected function execute($arguments = array(), $options = array()) {

     //cargamos el contexto.
    $configuration = ProjectConfiguration::getApplicationConfiguration($options['application'], $options['env'], false);
    sfContext::createInstance($configuration);    

    //habilitamos el acceso a base de datos.
    $databaseManager = new sfDatabaseManager($this->configuration);
    $connection = $databaseManager->getDatabase($options['connection'])->getConnection();

  }
20/06/11

Symfony disable campo de un formulario

Podemos envíar cualquier tipo de atributo a un widget de la siguiente forma:

 $this->widgetSchema['campo']->setAttributes(array('disabled' => 'disabled'));
24/05/11

Proteger un directorio contra la ejecución de scripts

Crear un archivo .htaccess en la carpeta que deseamos proteger con el siguiente código:

<FilesMatch "\.(sh|asp|cgi|php|php3|ph3|php4|ph4|php5|ph5|phtm|phtml)$">
    order allow, deny
    deny from all
</FilesMatch>

Deberemos modificar el path completo del directorio para que FilesMatch funcione.