You are on page 1of 18

Fernando García Atúncar WebConceptos Consulting 25/08/2012

ZendFramework
Fundamentos

… conversando con muchos amigos, colegas y alumnos, siempre surge la frase recurrente al trabajar con Frameworks, “la curva de aprendizaje es alta” y la respuesta que tengo es siempre la misma: TIENES RAZÓN, es cierto la curva de aprendizaje siempre va a ser grande , lo importante es que empecemos ya a trabajar nuestros proyectos de manera profesional, ya sea ZF o cualquier otro , nosotros debemos tener el control. Fernando García Atúncar – CIO WebConceptos

permitiéndonos así enfocarnos en desarrollar sólo lo exclusivamente necesario. pero cuando reinventamos la rueda o perdemos tiempo en actividades repetitivas . Primero veremos su configuración y. Desarrollo de Aplicaciones de Negocio. ya dejaron de ser un problema. Los frameworks de desarrollo nos entregan un esquema general de trabajo y código que podemos reutilizar para evitar la reescritura de funcionalidades comunes. cuestiones muy técnicas que fueron un problema en su momento. TU SOCIO DE NEGOCIOS Iniciándonos con ZendFramewok En la actualidad programar ya no es muy complicado. funciones y herramientas vamos acumulando. el desarrollo de una aplicación de demostración. ¿Qué son los Frameworks? Mientras más tiempo pasamos programando más clases. hasta llegar al punto en que tenemos un sistema que aplicamos a cualquier proyecto.com* Web: http://www.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. ahora existen muchas librerías y herramientas que nos hacen la vida más fácil.com . 31 Urb. cuestiones de forma que antes nos preocupaban. en la segunda parte.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR .webconceptos. El problema con esto es que generalmente tenemos una especie de Frankestein que está hecho de muchas Calle Benjamín Doigg Mz E Lte. Consultoría en proyectos de TI. En este artículo podrás conocer uno de los principales framework para PHP: Zend Framework. la diversión desaparece y nos crea frustración. contacto@webconceptos. 1. Programar en PHP debería ser divertido y desafiante.

Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información.webconceptos.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Agrega código adicional que no es tuyo.com* Web: http://www. Instructor: FERNANDO GARCIA ATUNCAR partes (de terceros o programados por nosotros mismos). me queda sólo una conclusión clara: la decisión de cuál es el mejor. lo cual implica que sea difícil tenerlo actualizado y funcionando en forma correcta y segura. se organizan bajo una estructura sobre la cual desarrollamos nuestros proyectos. funciones o librerías. en general. 31 Urb. Desarrollo de Aplicaciones de Negocio. Igualmente en Internet podemos encontrar una gran cantidad de información comparativa y. ya que aprovechamos los componentes existentes aumentando la velocidad de desarrollo. Symfony. En algunos casos una aplicación desarrollada con un framework puede ser más lenta (en cuanto a rendimiento) que una diseñada y desarrollada desde cero. contacto@webconceptos. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. Consultoría en proyectos de TI. con más documentación que otros o con mejor rendimiento que otros. Kohana y Zend Framework. Luego de haber probado: Kumbia . nos entregan una estructura. CakePHP. unos más maduros que otros.com . sólo la puedes tomar tu probando cada uno y analizando cual se adapta mejor a tus necesidades actuales. como su nombre lo indica. nos entregan una serie de clases. armazón o marco para desarrollar nuestros proyectos.  No reinventar la rueda. ¿Por qué usar Zend Framework? Existe una gran oferta de frameworks para PHP. En otras palabras. que junto a convenciones comunes. Calle Benjamín Doigg Mz E Lte. Hay que invertir tiempo en aprender a usarlos. TU SOCIO DE NEGOCIOS Los frameworks. se pueden contar: Facilita integrar a otras personas a tus proyectos ya que se comparten convenciones de desarrollo comunes. Entre las ventajas de usar frameworks.  No nos preocupamos de mantener actualizadas las distintas partes. Codeigniter. opiniones sobre cuál es superior al resto. . Como desventajas se pueden nombrar:     2.

Desarrollo de Aplicaciones de Negocio. incluidos algunos de Microsoft.com/download/latest (te recomiendo la versión “minimal”).zend. TU SOCIO DE NEGOCIOS En mi caso elegí Zend Framework por las siguientes razones:      En general muy buena documentación Una comunidad activa Tiene el respaldo de la compañía que está detrás de PHP: Zend Technologies Ltd. Codeigniter (CI) y. CakePHP . Google y Adobe Soporta PHP 5 Si bien tiene varias ventajas. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. como por ejemplo crear nuevos proyectos. 31 Urb.com . Calle Benjamín Doigg Mz E Lte. Gran cantidad de componentes.  Una vez descargado y descomprimido nos encontramos con el siguiente árbol de directorios:   <Carpeta de Descarga de ZendFramework>\bin: contiene ejecutables que nos ayudan a realizar algunas actividades comunes.2.4 o superior  Servidor que soporte mod_rewrite Luego de asegurarnos de cumplir con los requerimientos descargamos Zend Framework desde: http://framework. además. una de sus desventajas es que es un poco más difícil de aprender que otras alternativas. contacto@webconceptos. 3. Consultoría en proyectos de TI.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. como por ejemplo Kumbia .com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR . Preparando el Sistema Para preparar nuestro sistema para comenzar a trabajar con Zend Framework debemos verificar que cumplimos con sus requerimientos: PHP versión 5. existen reportes que indican que también tiene un rendimiento menor que el mismo CI. <Carpeta de Descarga de ZendFramework>\library: contiene todos los componentes de Zend Framework.webconceptos.com* Web: http://www.

com . Luego es necesario que vayamos al directorio que  Calle Benjamín Doigg Mz E Lte.com* Web: http://www. Desarrollo de Aplicaciones de Negocio. 31 Urb.  README. en tu proyecto el directorio /library está vacío y como se explicó en el párrafo anterior este debe contener todos los componentes del framework. Desde la terminal ejecutamos: Instructor: FERNANDO GARCIA ATUNCAR INSTALL.txt: informa sobre los cambios de la versión descargada respecto a la anterior.9. deberías encontrar lo siguiente: /application: contiene los directorio destinados a nuestra aplicación  /library: debe contener todos los componentes de Zend Framework  /public: este directorio es el único que debería tener acceso público  /tests: directorio destinado a pruebas para tu aplicación.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Si todo está correcto debería aparecer el mensaje: “Zend Framework Version: 1. Ya con esto estamos en condiciones de iniciar nuestros proyectos en Zend Framework.txt: texto de la licencia. Lo primero que haremos es mover el directorio de Zend Framework a un lugar de nuestra preferencia (por ejemplo. Como te habrás dado cuenta.webconceptos. Consultoría en proyectos de TI. Para esto primero vamos al lugar donde crearemos el proyecto (el directorio de nuestro servidor Web). contacto@webconceptos. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.0”. TU SOCIO DE NEGOCIOS Para probar que hemos realizado todo correctamente abrimos una terminal y ejecutamos lo siguiente: zf show version <Unidad>:\PHPNivel3\Clases\ Una vez dentro de nuestro directorio de trabajo crearemos nuestro primer proyecto: zf create project ejercicio Si todo va bien deberías ver el mensaje: “Creating project at <Unidad>:\PHPNivel3\Clases\” y dentro del directorio <Unidad>:\PHPNivel3\Clases\ejercicio. Abrimos una terminal y ejecutamos:  . nuestro <Unidad>:\ZendFramework) y agregaremos un alias para los ejecutables si es Linux o variables de entorno si estas en windows.  LICENCE.txt: se indican los requerimientos y recomendaciones para la instalación del framework.

en lugar de copiar el directorio /Zend. disminuyendo así el espacio a ocupar. 31 Urb.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. Consultoría en proyectos de TI. puedes hacer un enlace simbólico. . Desarrollo de Aplicaciones de Negocio. contacto@webconceptos.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR descomprimimos inicialmente (y que lo tenemos en <Unidad>:\ZendFramework\”) y copiemos el contenido del directorio /library en el de nuestro proyecto. TU SOCIO DE NEGOCIOS Si prefieres. Si ahora vas a tu navegador y abres http://localhost/zf/primerproyecto/public/ deberías ver el siguiente mensaje de bienvenida: Calle Benjamín Doigg Mz E Lte. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.webconceptos.com .com* Web: http://www.

webconceptos.com* Web: http://www.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR . contacto@webconceptos. En nuestras aplicaciones con Zend Framework tenemos controladores (controllers) y dentro de ellos existen acciones (actions). es decir. 31 Urb.php3/entradas/agregar. Para nuestro proyecto inicial lo que haremos es un directorio de contactos. Desarrollo de Aplicaciones de Negocio. acceder al directorio de nuestro proyecto <Directorio del Proyecto>/application/controllers) y ejecutar los siguientes comandos: zf create action add index Calle Benjamín Doigg Mz E Lte. así si por ejemplo estuviéramos programando un proyecto y llamamos a: http://proyecto. zf create project ejemplo03 Entramos al proyecto .Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. Como es un proyecto simple nos basta con trabajar con el controlador por defecto (“index”) y dentro de este las siguientes acciones: Creando el controlador Para crear nuestras acciones basta con abrir una terminal.php. la ubicación de esta clase es: <Directorio del Proyecto>/application/Bootstrap. el controlador sería “entradas” y la acción “agregar”. una aplicación simple que nos servirá para gestionar la información relacionada con las personas que conocemos. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. Consultoría en proyectos de TI. TU SOCIO DE NEGOCIOS Creando un CRUD: Zend Framework tiene una clase llamada “Bootstrap” que nos permite iniciar los recursos que utilizaremos en nuestro proyecto.com .

php” que contiene las acciones antes mencionadas: <?php class IndexController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } public function addAction() { // action body } public function editAction() { // action body } public function deleteAction() { // action body } } Estos mismos comandos además de crear el controlador y sus acciones también crea las vistas que más tarde utilizaremos. contacto@webconceptos. Consultoría en proyectos de TI.com* Web: http://www.com .com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR . Si pruebas cada URL deberías ver el siguiente mensaje (con excepción de la primera URL que tiene aún la vista por defecto de Zend Framework) View script for controller index and script/action name delete Calle Benjamín Doigg Mz E Lte. 31 Urb. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. TU SOCIO DE NEGOCIOS zf create action edit index zf create action delete index Estos crearan las acciones “add”.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. “edit” y “delete” dentro del controlador “index”.webconceptos. Si todo se realizó correctamente deberías poder ver dentro del directorio application/controllers un archivo llamado “IndexController. Desarrollo de Aplicaciones de Negocio.

com').db.db.`contacts` ( `id` INT NOT NULL AUTO_INCREMENT . `email` VARCHAR( 60 ) NOT NULL .db. para esto abrimos el archivo: <Directorio del Proyecto>/application/configs/application.'maria@gonzalez. PRIMARY KEY ( `id` ) ) Además agregaremos una entrada a la tabla para tener datos con los que trabajar: INSERT INTO contacts (name. Desarrollo de Aplicaciones de Negocio. `name` VARCHAR( 30 ) NOT NULL .params. Para esto podemos usar phpmyadmin o el programa de tu preferencia: CREATE TABLE `ejemplo03`.com* Web: http://www.'Gonzalez'. 31 Urb.com'). contacto@webconceptos.params. Consultoría en proyectos de TI. Lo primero es que configuremos la información de nuestra base de datos.params.'Perez'.email) VALUES ('Juan'. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.db. lo siguiente: resources.host = localhost resources.com .com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR .username = usuario resources.password = clave resources.ini” y agregamos dentro de “[production]” (antes de “[staging : production]”).'juan@perez. Calle Benjamín Doigg Mz E Lte. TU SOCIO DE NEGOCIOS Creando el modelo En el apartado anterior definimos el esquema general del controlador y ahora es tiempo que trabajemos en el modelo.dbname = nombrebasededatos o utiliamos el comando >zf configure db-adapter “adapter=PDO_Mysql&username=root&pasword=&dbname=ejemplo03” A continuación crearemos la tabla que almacenará nuestros contactos.db. ('Maria'.lastname.params.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información.webconceptos.adapter = PDO_MYSQL resources. `lastname` VARCHAR( 30 ) NOT NULL .

com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR . $this->insert($data). 'email' => $email.com'). TU SOCIO DE NEGOCIOS ('Sofia'. (int)$id). } return $row->toArray(). if (!$row) { throw new Exception("No se encuentra la fila $id"). $this->update($data. 'email' => $email. contacto@webconceptos. ). ('Pedro'. $row = $this->fetchRow('id = ' . $lastname.'Sanchez'. Una vez realizado esto podemos generar nuestro modelo creando el siguiente archivo: <?php class Model_Table_Contacts extends Zend_Db_Table { protected $_name = 'contacts'. } } Así dentro del modelo tendremos los métodos que nos ayudarán a interactuar con nuestra base de datos.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. 'lastname' => $lastname. public function getContact($id) { $id = (int)$id. 31 Urb.com').'sofía@alvarez. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.com .'pedro@sanchez. } public function addContact($name. } function deleteContact($id) { $this->delete('id =' . Desarrollo de Aplicaciones de Negocio. Consultoría en proyectos de TI. $name. Calle Benjamín Doigg Mz E Lte.webconceptos. 'id = '. } function updateContact($id. $email) { $data = array( 'name' => $name. $id). ). 'lastname' => $lastname. (int)$id). $lastname.com* Web: http://www.'Alvarez'. $email) { $data = array( 'name' => $name.

charset=utf-8'). $view->headTitle()->setSeparator(' . 'text/html. una columna lateral y el pie de página.1).com . ahora corresponde que nos ocupemos del “layout”. Desarrollo de Aplicaciones de Negocio. TU SOCIO DE NEGOCIOS Creando las vistas En Zend Framework encontramos las vistas en el directorio “views” y se organizan de la forma: views/scripts/{nombredelcontrolador}/{nombredelaaccion}. contacto@webconceptos. Consultoría en proyectos de TI. Para evitar repetir código es que existe la posibilidad de crear un “layout” o plantilla donde colocaremos el código común y desde donde llamaremos las vistas.').layoutpath = APPLICATION_PATH “/layouts” o agregamos por ZF Tools: >zf enable layout También agregaremos las definiciones generales para nuestro layout editando la clase Bootstrap (“/application/Bootstrap”) y agregando lo siguiente: function _initViewHelpers() { $this->bootstrap('layout'). $layout = $this->getResource('layout'). Como te habrás dado cuenta nuestras vistas ya están creadas (ocurrió cuando creamos el controlador en el punto 4. $view->doctype('XHTML1_STRICT').com* Web: http://www. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. Calle Benjamín Doigg Mz E Lte. $view->headMeta()->appendHttpEquiv('Content-Type'. 31 Urb. $view = $layout->getView().ini) la siguiente linea (justo después de la configuración de la base de datos que agregamos): resources. Lo primero que debemos hacer es crear el directorio: “application/layouts/” y agregar en nuestro archivo de configuración (configs/applications. En la mayoría de los proyectos hay partes de código HTML que se repite para todas las vistas.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR .Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información.webconceptos.layout.phtml . por ejemplo: un encabezado.

Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información.com .com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR . por lo que vamos a “/application/controllers/IndexController. en adelante nos corresponde “darle vida” a sus funcionalidades. TU SOCIO DE NEGOCIOS $view->headTitle('Primeros pasos en Zend Framework'). Desarrollo de Aplicaciones de Negocio. como mostrar. editar y eliminar nuestros contactos. es decir. Mostrando los contactos El primer paso es agregar la lógica de la funcionalidad en la acción del controlador.phtml”: de nuestro “layout” en <?php echo $this->doctype().php” y agregamos lo siguiente en nuestra acción por defecto (“indexAction”): // action body // Título de la vista $this->view->title = "Mis Contactos". Implementando las funcionalidades En esta quinta parte analizaremos como implementar las funcionalidades de nuestro sistema. ?></h1> <?php echo $this->layout()->content. 31 Urb. agregar. por todos los Calle Benjamín Doigg Mz E Lte. ?> </head> <body> <h1><?php echo $this->escape($this->title). // Iniciamos una instancia del nuestro modelo $contacts = new Model_Table_Contacts().com* Web: http://www. // Asignamos a la vista el resultado de consultar registros $this->view->contacts = $contacts->fetchAll(). ?> </body> </html> Con esto finalizamos lo relacionado con la estructura del sistema. ?> <html> <head> <?php echo $this->headMeta(). } Por último crearemos el archivo “/application/layouts/layout. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. Consultoría en proyectos de TI.webconceptos. contacto@webconceptos. ?> <?php echo $this->headTitle().

webconceptos.'action'=>'edit'.phtml”) y cambiamos su contenido por el siguiente: .?>">Agregar contacto</a></p> <table> <tr> <th>Nombre</th> <th>Apellido</th> <th>Correo</th> <th>&nbsp. Consultoría en proyectos de TI. Desarrollo de Aplicaciones de Negocio.?></td> <td><?php echo $this->escape($contact->email). 31 Urb. ?> </table> Instructor: FERNANDO GARCIA ATUNCAR El segundo paso es ir a la vista para esta acción (“/application/ views/ scripts/ index/ index.com Curso: ZENDFRAMEWORK – FUNDAMENTOS <p><a href="<?php echo $this>url(array('controller'=>'index'. contacto@webconceptos.'action'=>'add')).?>">Editar</a> <a href="<?php echo $this>url(array('controller'=>'index'.?></td> <td><?php echo $this->escape($contact->lastname).</th> </tr> <?php foreach($this->contacts as $contact) : ?> <tr> <td><?php echo $this->escape($contact->name).'action'=>'delete'.com .Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información.?>">Borrar</a> </td> </tr> <?php endforeach.?></td> <td> <a href="<?php echo $this>url(array('controller'=>'index'.'id'=>$contact>id)).com* Web: http://www. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.'id'=>$contact>id)). TU SOCIO DE NEGOCIOS Ahora si abrimos la página de inicio (“http://localhost/zf/primerproyecto/public/index/”) nos deberíamos encontrar con lo siguiente: Calle Benjamín Doigg Mz E Lte.

com .webconceptos. TU SOCIO DE NEGOCIOS Agregando contactos Curso: ZENDFRAMEWORK – FUNDAMENTOS Para agregar contactos crearemos “/application/forms/Contact.php ”: un formulario en <?php // Creamos una clase que extiende el componente Zend_Form class Form_Contact extends Zend_Form { public function __construct($options = null) { parent::__construct($options). $lastname->setLabel('Apellido') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty').com* Web: http://www. Calle Benjamín Doigg Mz E Lte. $this->setName('contact'). $name->setLabel('Nombre') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'). contacto@webconceptos. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. $lastname = new Zend_Form_Element_Text('lastname'). $email = new Zend_Form_Element_Text('email'). $id = new Zend_Form_Element_Hidden('id').com Instructor: FERNANDO GARCIA ATUNCAR . Desarrollo de Aplicaciones de Negocio. Consultoría en proyectos de TI. $name = new Zend_Form_Element_Text('name'). 31 Urb.

$name.webconceptos. $this->view->form = $form. TU SOCIO DE NEGOCIOS } } Ahora sólo nos resta agregar en nuestro controlador la lógica de la acción destinada a agregar contactos (addAction): public function addAction() { $this->view->title = "Agregar un nuevo contacto". Consultoría en proyectos de TI. $this->_redirect('/'). EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. } else { $form->populate($formData).?> Si vamos a http://localhost/zf/primer-proyecto/public/index/add deberíamos ver lo siguiente: Calle Benjamín Doigg Mz E Lte. 'submitbutton'). $submit)). Desarrollo de Aplicaciones de Negocio. $email. $form->submit->setLabel('Agregar'). en la vista de la acción “agregar” (/views/scripts/index/add.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. $submit->setAttrib('id'. $this->addElements(array($id. $form = new Form_Contact(). $email). .com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR $email->setLabel('Correo') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty').phtml) incluíremos: <?php echo $this->form . if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(). $lastname. $contact = new Model_Table_Contacts(). $email= $form->getValue('email'). if ($form->isValid($formData)) { $name = $form->getValue('name'). $submit = new Zend_Form_Element_Submit('submit'). contacto@webconceptos. $contact->addContact($name.com . $lastname. 31 Urb.com* Web: http://www. } } } Por último. $lastname= $form->getValue('lastname').

Luego en “editAction()” agregaremos lo siguiente: public function editAction() { // action body $this->view->title = "Editar contacto".com* Web: http://www. $contacts ->updateContact($id. Desarrollo de Aplicaciones de Negocio. $form->submit->setLabel('Guardar'). } else { $form->populate($formData). 31 Urb. $email). $name. if ($form->isValid($formData)) { $id = (int)$form->getValue('id').com Instructor: FERNANDO GARCIA ATUNCAR . $form = new Form_Contact(). Consultoría en proyectos de TI. $this->_redirect('/'). $name = $form->getValue('name'). $this->view->form = $form.Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. Calle Benjamín Doigg Mz E Lte. $contacts = new Model_Table_Contacts(). $lastname = $form->getValue('lastname'). if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(). $lastname.webconceptos. $email = $form->getValue('email'). contacto@webconceptos. TU SOCIO DE NEGOCIOS Editando los contactos Curso: ZENDFRAMEWORK – FUNDAMENTOS La acción dedicada a la edición de nuestros contactos es muy similar a la ocupada para agregarlos.com . EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.

Desarrollo de Aplicaciones de Negocio.com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR } } else { $id = $this->_getParam('id'. $form->populate($contacts->getContact($id)). } } .Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. if ($id > 0) { $contacts = new Model_Table_Contacts().com .?> Al visitar http://localhost/zf/primer-proyecto/public/index/edit deberíamos encontrar lo siguiente: Borrando contactos Por último necesitamos implementar una funcionalidad para eliminar registros en nuestro sistema.com* Web: http://www. 31 Urb. contacto@webconceptos. TU SOCIO DE NEGOCIOS } Mientras que en la vista de esta acción (/views/scripts/index/edit. Para esto en el controlador definiremos la acción “deleteAction”: Calle Benjamín Doigg Mz E Lte. EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos.webconceptos. Consultoría en proyectos de TI. 0).phtml) <?php echo $this->form .

seguro de querer borrar el contacto: <?php echo $this->escape($this->contact['name']). Desarrollo de Aplicaciones de Negocio. ?>? </p> <form action="<?php echo $this->url(array('action'=>'delete')). $this->view->contact = $contacts->getContact($id). EL Pacifico 1era Etapa – San Martin de Porres Fijo: (01) 6970908 * Claro: 989514250 * RPC: 972731571 Email: informes@webconceptos. TU SOCIO DE NEGOCIOS if ($this->getRequest()->isPost()) { $del = $this->getRequest()->getPost('del').webconceptos. ?>" method="post"> <div> <input type="hidden" name="id" value="<?php echo $this>contact['id']. $contacts = new Model_Table_Contacts(). Consultoría en proyectos de TI. ?> <?php echo $this>escape($this->contact['lastname']).Formación especializada en Proyectos bajo el PMI Capacitación en Tecnología de Información. $contacts = new Model_Table_Contacts(). } $this->_redirect('/').com Curso: ZENDFRAMEWORK – FUNDAMENTOS Instructor: FERNANDO GARCIA ATUNCAR public function deleteAction() { // action body $this->view->title = "Eliminar contactos". } } Mientras que en la vista incluiremos un mensaje de confirmación del registro que se quiere borrar: <p>Est&aacute. 31 Urb. . ?>" /> <input type="submit" name="del" value="Yes" /> <input type="submit" name="del" value="No" /> </div> Al intentar borrar un contacto nos debería mostrar la siguiente confirmación: Fin Calle Benjamín Doigg Mz E Lte. if ($del == 'Yes') { $id = $this->getRequest()->getPost('id').com . $contacts->deleteContact($id).com* Web: http://www. 0). } else { $id = $this->_getParam('id'. contacto@webconceptos.