Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan

Archivo de la categoría 'Frameworks'...

Archivado bajo Aplicaciones Web, Desarrollo Web, Frameworks, symfony
Comentarios (0) Posted by Asier Marqués on Domingo, Noviembre 1st, 2009

Archivado bajo .net, Desarrollo Web, Frameworks

Esto sucede porque mvc espera todos los campos especificados para una tabla antes de insertar un registro, incluido el campo de identidad que suele ser autonumérico.

Podemos excluir uno o varios campos a la hora de insertar un nuevo registro, mediante un filtro en la declaración del método para la acción responsable de hacer el insert.


[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Insert([Bind(Exclude="Id")] Object object)
{

//lógica para el insert aquí

}
Comentarios (0) Posted by Asier Marqués on Miércoles, Julio 1st, 2009

Archivado bajo Desarrollo Web, Frameworks, Trucos, symfony

Aunque los helpers de Symfony están pensados para ser usados en la vista, nos puede resultar útil e incluso imprescindible algunas veces usarlos fuera de la misma.

Symfony 1.2 nos permite hacerlo de la siguiente manera:


/*creamos un array con los nombres de los helpers

que necesitamos y de los que dependan*/

$hprs = array('Url', 'Tag', 'Asset');

//cargamos los helpers

sfProjectConfiguration::getActive()->loadHelpers($hprs);

//ya podemos usarlos sin problema

$url = url_for('modulo/acción?variable=valor');
Comentarios (0) Posted by Asier Marqués on Sábado, Febrero 28th, 2009

Archivado bajo Bases de Datos, Desarrollo Web, Frameworks, Microsoft, PHP, Sistemas, Trucos

En la actual versión de symfony se usa Propel junto a Creole para crear un orm y una capa de abstracción entre la base de datos y el resto de nuestra aplicación.

Esto nos permite desarrollar aplicaciones independientes del motor de base de datos que usemos.

Php utiliza oficialmente la librería mssql para conectarse a una base de datos Sql Server y aunque existe una opción mejor por parte de Microsoft en fase CTP, Propel (y por lo tanto Symfony) la utilizan para conectarse a este tipo de motor.

Sin embargo, para conseguir conectarse y operar con éxito con Sql Server 2005 hay que hacer una serie de configuraciones en php/symfony y hacks en creole.
(Espero que no os siente esto como un cubata de Baileys con tonica : )

Vamos a verlo paso por paso:

1- Actualizar la librería ntwdblib.dll a la versión 2000.80.194.0.

2- Activar las extensiones php_mssql y php_xsl en el php.ini.

Adicionalmente debemos indicar los siguientes parámetros para php_mssql:

mssql.datetimeconvert = 0
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

3- Crear nuestra base de datos en Sql Server y asignar el login y permisos adecuados al usuario que usemos para conectarnos.

4- Editar el archivo schema.yml con nuestro esquema de base de datos.

5- Configurar la conexión a la base de datos:

[ruta_completa]\symfony.bat configure:database
“mssql://usuario:password@equipo\instancia/nombre_baseDatos”

6- Construir el modelo orm de symfony:

[ruta_completa]\symfony.bat propel:build_model

7- Editar el fichero MSSQLConnection.php ubicado en \lib\plugins\sfPropelPlugin\lib\vendor\creole\drivers\mssql dentro del directorio de symfony.

En el caso de que no se especifique un puerto en el string de conexión a la base de datos, creole te inserta el valor de puerto predeterminado para sql server. Sin embargo, en Sql Server 2005 esto provoca un fallo impidiendo realizar una conexión exitosa a la base de datos.

Para evitar que creole nos meta el puerto si o si, debemos modificar la siguiente secuencia de control en MSSQLConnection.php:

if(!empty($dsninfo['port'])) {
$dbhost .= $portDelimiter.$dsninfo['port'];

}

//*else {
//$dbhost .= $portDelimiter.’1433′;
// }

Con estas modificaciones ya deberíamos poder trabajar con sql server 2005 desde symfony.

Comentarios (6) Posted by Asier Marqués on Miércoles, Julio 16th, 2008

Archivado bajo Desarrollo Web, Frameworks, Microsoft, PHP, Servidores Web, Sistemas

Desde hace algún tiempo he estado leyendo sobre varios frameworks de desarrollo con php, que me permitiesen de una forma fiable automatizar trabajo que, a pesar de no tener una dificultad notable para alguien que sepa programar, te hace perder un montón de tiempo si quieres hacer las cosas bien.

La opción que más me ha gustado para php es sin duda Symfony y puesto que desarrollo tanto para plataformas UNIX/Linux como para sistemas Microsoft, me interesé por hacerlo funcionar e incluso utilizarla en proyectos que actualmente me encuentro desarrollando bajo sistemas Microsoft.

Voy a detallar como es una instalación de Symfony en IIS. Yo lo tengo funcionando sobre 2003 Server SP2 con IIS6

1 – Se descarga el código fuente de Symfony y se descomprime en un directorio en una de las unidades de disco duro del servidor. (Supongamos D:\symfony)

2 – Se crea un directorio cuyo contenido será el que usemos como sitio web. (Supongamos D:\dir_proyecto)

3 – Abrimos un terminal, nos situamos en “dir_proyecto” y ejecutamos lo siguiente para crear un proyecto:

D:\symfony\data\bin\symfony.bat init-project nuevo_proyecto

Ahora creamos una primera aplicación para ese proyecto:

D:\symfony\data\bin\symfony.bat init-app nueva_aplicacion

4 – Creamos un sitio web nuevo que apunte al directorio “D:\dir_proyecto\web”.

5 – Dentro del ese nuevo sitio web, creamos un directorio virtual que apunte a “D:\symfony\data\web\sf”

6 -  Si usamos isapi rewrite necesitamos ahora aplicar las reglas de redirecciones para nuestro sitio web. En la documentación oficial nos comentan una serie de reglas específicas para entornos de IIS. Esas reglas pueden darnos problemas a la hora de acceder a los archivos del directorio “D:\symfony\data\web\sf”.

Para evitar estos problemas, debemos ser fieles a las reglas definidas en el .htaccess que se ha creado en el directorio “D:\dir_proyecto\web” y añadir las reglas de seguridad relativas a entornos Microsoft.

Las reglas de redireccionamiento quedarían de la siguiente forma:
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule (.*) /index.php [L]

Con esto ya deberíamos comprobar que todo funciona correctamente.

Comentarios (9) Posted by Asier Marqués on Martes, Julio 15th, 2008

Archivado bajo Desarrollo Web, Enlaces, Frameworks, Internet, PHP

Cake PHP es uno de los mejores y más serios frameworks que podemos utilizar para desarrollar de una forma rápida y segura aplicaciones en php.

En Hospedaxes han creado un blog que podéis seguir en éste enlace, en el que nos publicar trucos y manuales basados en su experiencia profesional con éste excelente framework.

Blog Cake PHP

Un link sin duda para recomendar a todos los profesionales que desarrollen en php y quieran conocer éste framework para utilizar en algún proyecto.

Comentarios (0) Posted by Asier Marqués on Lunes, Abril 7th, 2008

Archivado bajo Desarrollo Web, Frameworks, PHP

A veces cuando desarrollamos en web para ciertos proyectos que requiren agilidad extrema de desarrollo o sea siempre, no tenemos la posibilidad de ponernos a desarrollar todo desde cero y nuestra opción más viable es optar por el uso de frameworks. En el caso de php tenemos varias opciones muy buenas como Zend Framework, Cake php o Symfony.

En sentido web veo un post que resume una comparativa entre la opción de Zend y Symfony, publicada en karlkatzke.com, que llega a la siguiente conclusión:

  • Comienzo: Symfony tiene mucha documentación y gente por detrás desarrollando y ayudando, algo de lo que anda un poco corto Zend.
  • Testing: Symfony viene con tareas de testing por línea de comandos y genera una clase vacía para ello al crear un controlador. Mientras que Zend no ofrece soporte para testing.
  • Plantillas: Zend tiene un sistema de plantillas un poco verde al que hay que hacerle algunos hacks para realizar algunas cosas. Symfony, al contrario, su sistema de plantillas es muy maduro, al cual le puedes añadir módulos.
  • Plugins: más de lo mismo, Symfony es extensible, Zend no.
  • Módulos de bases de datos: Zend usa ActiveRecord, mientras que en Simfony le puedes añadir el motor que desees, incluso Zend_Db.
Comentarios (21) Posted by Asier Marqués on Jueves, Enero 17th, 2008

Archivado bajo Desarrollo Web, Frameworks, PHP

Juction es un framework para php que nos permite concentrarnos en nuestra lógica de aplicación, simplificando de una forma muy potente todo el trabajo con nuestra base de datos.

Juction mapea las consultas internas a la base de datos cuando trabajamos con objetos, olvidandonos de toda la carga CRUD (Create, Retrieve, Update y Delete).

Lo que sigue es un ejemplo de uso en Juction.

require("/Libs/Junction/Junction.php");
require("/Domain/JunctionUser.php");

//Aquí Juction mapea una típica clase de usuario

$junction = Junction::construct("JunctionUser");
//Ahora jugamos con la clase
$user = new JunctionUser();
$user->setEmail("foo@bar.com");
$user->setPassword("password");
$user->setDate(time());
//Esto insertará un nuevo usuario en la base de datos y devolverá un id, de forma transparente
$junction->save($user);
//un ejemplo con querys parametrizadas
$clause = $junction->createQuery("password = ?");
//Limpiamos el valor que pasamos como parámetro a la consulta
$clause->bind(0, "password");
//Recuperamos en un array de objetos mapeados para juction, el resultado de la query
$users = $junction->loadWhere($clause);

Están trabajando actualmente en el soporte para cosas más avanzadas como INNER JOINS, pero de momento éste proyecto le vendrá muy bien a más de uno.


Comentarios (0) Posted by Asier Marqués on Jueves, Enero 3rd, 2008

Archivado bajo Desarrollo Web, Frameworks, PHP

Aurora es un framework para php, escrito en php 5.2, que nos permite conseguir, de una forma rápida y “cómoda”, una arquitectura Modelo de Vista Controlador (MVC) en nuestras aplicaciones web o de consola.

Las características más importantes que conseguimos con éste framework son:

  • Fácil internacionalización
  • Api simplificada para accesos a base de datos
  • Sistema de caché
  • Lógica de plantillas
  • URL simplificadas
  • Modelos de datos

Aunque esto lo podemos conseguir perfectamente sin necesidad de un framework, no está de más disponer de herramientas que nos faciliten el trabajo para ciertas aplicaciones en las que no necesitemos un control total sobre nuestro código.

Comentarios (2) Posted by Asier Marqués on Martes, Noviembre 27th, 2007

Archivado bajo Desarrollo Web, Frameworks, javaScript

Remy Sharp, creador de Left Logic, nos presenta diferencias en el código de las dos librerías, desde mi punto de vista, más serias, cómodas y elegantes de desarrollar con javascript: JQuery y Prototype.

[slideshare id=145849&doc=prototype-jquery-going-from-one-to-the-other-1193346036472971-5&w=425]

Comentarios (0) Posted by Asier Marqués on Viernes, Octubre 26th, 2007