Posts Tagged ‘PHP’

Encontrar problemas con ZendServer y Zend Studio

Wednesday, June 9th, 2010

Debo admitir que Php casi siempre fue una herramienta bastante tosca a comparación de herramientas mas amigables como las suites Visual Studio de Microsoft. Los desarrolladores de PHP amamos nuestro entorno de trabajo y la forma que hacemos las cosas, vi sigue siendo y será la mejor IDE para PHP. El tema es que aveces trabajamos con gente no tan enferma como nosotros que prefieren pantallitas, iconitos y botoncitos y grandes carteles rojos para saber que algo no esta bien y corregir los problemas.

Acabo de ver un video de Zend donde muestra una herramienta de detección de errores y problemas en el servidor (Zend Server), para que el Sysadmin pase el problema al desarrollador y este pueda desde su entorno de trabajo(Zend Studio), visualizar los problemas detectados por el sysadmin y corregirlos. Verdaderamente me pareció algo excelente, los dejo con el video.

  • Share/Bookmark

Embebed Forms en Symfony, una forma fácil

Thursday, June 3rd, 2010

Los formularios embebidos de symfony son una características muy buena del framework, el problema es que utilizarlos es bastante complicado y existe poca documentación oficial al respecto.

Toda esta duda me surgió debido a este video de Francois donde vi un nuevo método de Propel 1.5 para facilitar el proceso de embeber fomularios. El tema es que en varios proyectos que estoy llevando a cabo no tengo pensado migrar a nuevas versiones de symfony en un corto plazo, por eso quise facilitarme la vida implementando algo parecido. Vean el video para ver de lo que les hablo.

mergeRelation from Francois Zaninotto on Vimeo.

He trabajado un poco en el tema y realice una pequeña implementación para facilitar el trabajo parecida a la que se ve en el video, aquí la explicación.

El modelo

Todo parte de la suposición que tenemos una tabla 1 (tbl1) y otra tabla 2 (tbl2) que posee una relación con la primera, a travez del campo tbl1_id, deberemos respetar esta notación siempre para utilizar esta utilidad, la relación debe definirse a travez del campo tabla padre nombre seguido por _id, por ejemplo xxx_id.

Aquí un schema de ejemplo.

Generamos todo, modelo, forms, filters, sql

./symfony propel:build-all

Luego cargar las nuevas tablas a la base. Si no hay datos

./symfony propel:insert-sql

Modificaciones en las clases bases

Ahora, el siguiente paso es modificar la clase base de los forms para contar con los métodos reutilizables a fin de embeber formularios. Personalmente pienso que el mejor lugar es lib/forms/BaseFormPropel.class.php, si conocen un lugar mas apropiado para ubicarlos acepto la recomendación. Los métodos a añadir son tres.

loadAsEmbebedForm : Que añade la relación como un formulario embebido, se utilizará en el método configure de la clase Form del padre.

bindObjectToEmbebed : Al guardar, en caso de realizarse cambios, asocia el objeto padre a los objetos hijos de los formularios embebidos, se llama por bind.

is_seted_value : bindObjectToEmbebed lo utiliza para saber si se produjeron cambios en el formulario embebido.

bind : Redefinimos el metodo para llamar a bindObjectToEmbebed antes de realizar el bind de la clase base. El único que utilizaremos nosotros será loadAsEmbebedForm, los otros se invocarán automaticamente cuando corresponda. Debería quedarles algo así

El widget sfWidgetFormInputAjaxDelete

Luego será necesario que incorporen el widget sfWidgetFormInputAjaxDelete.class.php (lib/widget/) , este creará una entrada de texto con un boton X el cual al ser cliqueado invocará a la accion del modulo que especifiquen para borrar el elemento. Esta acciòn deberá ser implementada por ustedes en el modulo que les parezca.

Deberán tener instalado ysJQueryRevolutionsPlugin para que este widget funcione

http://www.symfony-project.org/plugins/ysJQueryRevolutionsPlugin

Configurar el Formulario Embebido

Con esto tenemos configurada nuestra instalación para embeber todos los formularios que querramos. Veamos como sería para embeber en Tbl1 el formulario Tbl2, lo único que deberemos hacer es configurar el form del modelo Tbl1 (tabla padre) para contener a Tbl2 (tabla hija). Para esto vamos a modificar el método configure utilizando el método recientemente añadido a la clase BaseFormPropel, loadAsEmbebedForm.

class Tbl1Form extends BaseTbl1Form {
public function configure() {
$this->loadAsEmbebedForm(’tbl2′, ‘thetext’, ‘demo/deleteTbl2′);
}
}

Aquí deberán pasar como argumentos al método el nombre del modelo hijo, el método para leer la propiedad que se utilizará como etiqueta del formulario embebido y la URI para la acción que borrará el formulario embebido.
Al terminar deberían probar con alguno módulo que utilice el form y les saldría una cosa parecida a esta.sshot-1

Eso es todo amigos, les parece sencillo ?

  • Share/Bookmark

Curso de Desarrollo Web con PHP

Friday, April 16th, 2010

Tengo la alegría de contarles que con la ayuda de la UTN-FRRE estoy pronto a largar una nueva edición del curso de desarrollo web con PHP5, esta vez con la ayuda y colaboración de mi colega Marcos Ibañez.

El temarío fue preparado en base a lo visto en los cursos del año pasado y la experiencia adquirida en el mismo. Nuevamente el curso será dividido en dos partes, incial y avanzado, comenzando la etapa inicial el día 27 de abril.

El temario para la etapa inicial es el siguiente

  1. Introducción al Desarrollo Web
    • La Internet (Direcciones IP, Servicios de Nombre, Servidores Web, Bases de Datos, Browsers, Hostings).
    • El protocolo HTTP
    • El estándar HTML
    • Arquitectura de Aplicaciones Web
    • LAMP
  2. HTML
    • Estructuras de documentos HTML
    • Los estándares de la w3c
    • DOM
    • Tags HTML
    • Formularios HTML
  3. CSS
    • Introducción a las Plantillas de estilo
    • Selectores CSS
    • Aplicar estilos con CSS
    • Inclusión de plantillas de estilos
  4. Introducción a PHP
    • Presentación del Lenguaje
    • El Entorno de Trabajo (Apache, Mysql, Netbeans)
    • Variables y Tipos de Datos
    • Variables Predefinidas
    • Entrada y Salida
    • POST, GET
  5. Estructuras de Datos y Control
    • Condicionales
    • Iterativas
    • Includes y Requires
  6. Funciones
    • Invocación de Funciones
    • Definición de Funciones
    • Alcance de Variables
    • Parámetros por Valor y Referencia
    • Valores de Retorno
    • Funciones Integradas
  7. Diseñar aplicaciones con PHP
    • Organizar el Proyecto
    • Organizar los componentes del sitio
    • Utilizar librerías
    • Utilizar Layouts y Master Pages

La idea es que el alumno conozca las bases para desarrollar sites dinámicos sencillos y posea sólidos conocimientos para continuar su autoaprendizaje en el mundo de PHP5.

La segunda etapa pretende consolidar estos conocimientos añadiendo técnicas avanzadas como la Orientación a Objetos y la interacción con bases de datos Relacionales.

El temario de la segunda etapa es el siguiente.

  1. Bases de Datos Relacionales
    • Introducción al Modelo Relacional
    • Tablas, Atributos, Relaciones
    • Diseño de Modelos de Datos
  2. SQL y MYSQL
    • Lenguaje de Consulta estructurada
    • Creación de Bases de Datos, Tablas, y operaciones con las mismas a través de SQL.
  3. Interacción con MySQL desde PHP
    • Utilización de las API’s para interactuar con bases de Datos con PDO
    • Creación de aplicaciones con backend de datos
  4. Interacción con Formularios
    • Interactuar con Formularios HMTL
    • Controles
    • Inputs y Textarea
    • Selects y Selects Múltiples
    • Radio Buttons
    • Checkbox
    • Lectura de los parámetros del formulario y validación
    • Persistencia de los Datos en MySQL
    • Listados
  5. Sesiones
    • Manejo de Sesiones y Cookies
    • Creación un Login de Usuarios
  6. Orientación a Objetos
    • Definición de Clases
    • Definición de Métodos y Métodos Mágicos
    • Manipulación de Objetos
  7. Orientación a Objetos Herencia y Polimorfismo
    • Herencia
    • Interfaces
    • Polimorfismo

Estan todos invitados a participar del curso, con solo tener alguna noción de algoritmía y programación alcanzará para que pueda aprender todos los conceptos del curso

Los horarios del curso serán por la mañana o por la tarde

- Martes y Jueves de 14:30 a 17:30
- Martes y Jueves de 9:00 a 12:00

El costo del curso será de :

- Alumnos de la UTN : $ 250 por etapa

- No alumnos de la UTN : $ 300 por etapa

Las inscripciones se realizán en:

Inscripción: Alumnos U.T.N.: Secretaría de Asuntos Universitarios – F.R.Re. – U.T.N.
Público en general: Edificio Anexo – F.R.Re. – U.T.N. Av. French y Laprida – TE 426014
Lunes a Viernes: 8:00 a 12:00 / 16:00 a 21:00 hs

El curso tendrá vacantes limitadas, solo 15 alumnos por turno.

  • Share/Bookmark

Soporte para Symfony

Sunday, March 14th, 2010

Mucha gente suele enviarme correos para que los ayude con sus desarrollos con Symfony, mirando mis readers de hoy me encontré con este sitio:

http://www.symfonyexperts.com

Un foro donde uno puedo hacer preguntas sobre symfony poniendo una ganancia por la pregunta realizada, una vez que se responda el que pregunta debe pagar por su respuesta y el que respondió la pregunta se llevará parte de la recompensa.

Los invito a todos a participar, a ver si así recupero algo de mi tiempo invertido en responder preguntas.

  • Share/Bookmark

Netbeans 6.8 esta en el Aire

Wednesday, December 16th, 2009

Para empezar mi día con algo nuevo me entero que ya esta disponible la versión 6.8 de la famosa IDE de Sun. La promesa de esta IDE para programadores PHP es la integración con el framework de Symfony, después de una larga espera a partir de hoy la podremos tener en nuestras manos.

Alguna de las novedades en el área de PHP son

- Mejoras en el Gestor de Proyecto

- Mejoras en el Editor, soporte para Espacios de Nombre (PHP 5.3) entre otros

- Mejoras respecto al Unit y Funcional Testing

- Integración con MySQL

- Nueva integración con Symfony

- Pueden ver otras novedades en su site

He probado las betas y la verdad que tiene muchísimas características que personalmente encuentro muy prácticas. Sin lugar a dudas el crecimiento diario de este entorno de desarrollo tan utilizado por miles de desarrolladores en todo el mundo es otro hito en el avance del open source, mis sinceras felicitaciones al equipo de desarrollo.

  • Share/Bookmark

Conocer la acción y el módulo ejecutado en Symfony

Saturday, December 5th, 2009

Es bastante útil conocer en qué módulo y acción se encuentra la aplicación en un determinado momento. Esta información es accesible a través del contexto de ejecución, así que podemos recuperarlos desde allí.

Como recuperar el contexto depende si estamos en la vista o la acción, para cada caso les dejo un ejemplo.

En la acción:

sfContext::getInstance()->getActionName();

sfContext::getInstance()->getModuleName();

En la vista o plantilla (template):

$sf_context->getActionName();

$sf_context->getModuleName();

  • Share/Bookmark

Screencast – Soporte para Symfony en NB

Tuesday, November 3rd, 2009

Por todos lados habran leido que Netbeans traerá soporte para Netbeans en su próxima versión, bueno, la gente del equipo de desarrollo de NB realizó un screencast para demostrar su nueva Feature. Sin mas rodeos los dejos con lo prometido.

  • Share/Bookmark

Ponencia Juti 2009

Saturday, September 5th, 2009
Juti 2009

Juti 2009

A pedido de varios que asistieron a mi ponencia en la Juti 2009, les dejo para que descarguen las diapositivas de mi presentación de Symfony.

Espero que la charla alla sido de su agrado y puedan llegar a experimentar con esta excelente herramienta que cada día me sorprende mas.

Enlace de Descarga : Diapositivas de la charla en la Juti 2009

  • Share/Bookmark