Aplicación demo en Zend Framework



Hosting barato
VN:F [1.9.20_1166]
Rating: 9.5/10 (2 votes cast)
Vamos a construir una aplicación sencilla que nos gestione una biblioteca, por ejemplo. La página principal mostrará un listado total de los libros, y nos permitirá editarlos, añadir y eliminar libros.

La siguiente demo se ha desarrollado bajo:

  • Zend Framework 1.9.3
  • PHP 5.3.0
  • Apache 2.2.11

Lo almacenaremos en una tabla sencilla como la siguiente:

Atributo Tipo Obligatorio Comentarios
Id Integer Si CP y autoincremento
título varchar(100) Si
autor varchar(100) Si

Las páginas que construiremos serán las siguientes:

  • Home: Página desde la que podremos ver el listado total de libros de nuestra biblioteca
  • Añadir nuevo libro: Vista que nos permitirá dar de alta un nuevo libro
  • Editar libro: Vista desde la que podremos modificar los datos de cualquier libro de nuestra biblioteca
  • Eliminar un libro: Vista desde la que podremos eliminar cualquier libro que haya en nuestra biblioteca

Creamos el proyecto según se indica en esta entrada, quedándonos una estructura de la siguiente manera:

Estructura de nuestro proyecto de biblioteca en Zend Framework

El directorio /application es donde residirá el código de nuestra aplicación web. Como se puede ver, tenemos separados en directorios distintos tanto la vista, como el modelo como los controladores.

El directorio /public es el que será la raíz de nuestra aplicación web, por lo que para acceder a la aplicación en nuestro navegador deberemos poner: http://localhost/Biblioteca/public.

Para un portal público, se podría crear un host virtual haciendo que el document root sea directamente el directorio /public. Por ejemplo, podemos crear el host virtual llamado biblioteca.localhost de la siguiente manera en el fichero http-vhosts.conf.

Si nuestro Apache está escuchando por el puerto 80:

<VirtualHost *:80>
     ServerName biblioteca.localhost
     DocumentRoot /var/www/html/biblioteca/public
     <Directory "/var/www/html/biblioteca/public">
         AllowOverride All
     </Directory>
</VirtualHost>

Si nuestro Apache está escuchando por el Puerto 8080:

<VirtualHost *:8080>
      ServerName biblioteca.localhost:8080
      DocumentRoot /var/www/html/biblioteca/public
      <Directory "/var/www/html/biblioteca/public">
           AllowOverride All
      </Directory>
</VirtualHost>

Si nuestro sistema operativo es windows, deberemos dar de alta la url de acceso http://bibioteca.localhost en el archive hosts c:windossystem32driversetchosts. Se le debe asociar la IP 127.0.0.1 a http://biblioteca.localhost en el archivo hosts.

Las imágenes, los archivos de javascript y css de nuestra aplicación irán almacenados en directorios, dentro del directorio /public.

Ahora validaremos que nuestra aplicación se puede ver a través de la URL http://biblioteca.localhost:8080 y … ¡¡¡Voilà!!!

Home inicial de nuestro proyecto de biblioteca en Zend Framework

Bootstrapping
Cuando creamos el proyecto, se nos crea por defecto, dentro del directorio /application la clase Bootstrap que hereda de Zend_Application_Boostrap_Boostrap la cual nos permitirá poner en ella todo el código que sea necesario para el inicio de nuestra aplicación.

Fichero de configuración
El proyecto, dispone de un fichero de configuración propio en /application/configs con nombre application.ini que nos permite establecer los valores de configuración de la aplicación según el entorno en el que nos encontremos, pudiendo ser estos:

  • Producción
  • Test
  • Desarrollo

Para nuestra aplicación añadiremos un parámetro de configuración que haga referencia al sistema horario a utilizar por nuestra aplicación:
phpSettings.date.timezone = “UTC”

Evidentemente, podemos utilizar cualquier configuración horaria. Aquí tenemos un listado de zonas horarias de todo el mundo

Crear autoloading
Necesitamos crear un autoloading que cargue con todos los parámetros necesarios para la aplicación, nada más inicilizarse. El código donde se implementa esta carga es en la clase Bootstrap. El método que añadamos debe tener como prefijo _init. De esta manera se le indica a Zend Framework que debe llamar a dicha función para inicializar la aplicación.

/application/Bootstrap.php

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{

      protected function _initAutoload(){
           $moduleLoader = new Zend_Application_Module_Autoloader(array('namespace' => '', 'basePath' => APPLICATION_PATH));
           return $moduleLoader;
      }
}
?>

El módulo autoloader cargará clases con un determinado prefijo que se encontrarán dentro del directorio /application, según la siguiente tabla:

Directorio Prefijo Ejemplo
api Api_ Api_Rest
forms Form_ Form_Login
models Model_ Model_Libros
models/DbTable Model_DbTable_ Model_DbTable_Libros
plugins Plugin_ Plugin_

A partir de ahora, ya podemos a&ntilde:adir código en nuestra aplicación. Para ello, deberemos realizar las siguientes acciones:

  1. Crear controladores
  2. Crear modelos
  3. Crear base de datos
  4. Implementar cada una de las acciones de nuestra aplicación:
    1. Listado de libros
    2. Añadir nuevo libro
    3. Editar un libro
    4. Borrar un libro
Controladores

Antes de empezar a añadir código, es necesario especificar que cada página de la aplicación es conocida como una “acción” y que las acciones están agrupadas en “controladores” (controllers). Esto permite agrupar un conjunto de acciones relacionadas entre ellas. Por ejemplo, un “controlador” de Libros al que podemos llamar “libros”, podría tener las acciones de listado de libros, archivo de libros y visualización de información de un libro en concreto, por ejemplo.

Por defecto, los controladores en Zend Framework tienen una acción definida por defecto, denominada index de manera que para el caso anterior de las noticias podríamos tener que a través de http://biblioteca.localhost:8080/libros el cual nos daría la acción index que se haya definido.

Hay que añadir, que Zend Framework dispone de un nombre de controlador por defecto cuyo nombre no puede ser modificado y que es llamado index, el cual ejecutará por defecto la acción index. La url desde la que será llamado dicho controlador index será http://biblioteca.localhost:8080/

Ya estamos en disposición de listar los controladores y las acciones asociadas a estos que vamos a tener en nuestra aplicación de prueba:

Página Controlador Acción
Home Index index
Añadir libro Libro anyadir
Editar libro Libro editar
Borrar libro Libro borrar

Creación de los controladores
En Zend Framework los nombres de los controladores comienzan con una letra mayúscula seguida del nombre Controller, es decir, el nombre de la clase sería NombreControlador, y esta se encontraría dentro de un archivo con el nombre NombreControladorController.php dentro del directorio /application/controllers. Cada acción es un método público de la clase definida anteriormente y su nombre será escrito en minúsculas seguido de “Action”, es decir, nombreaccionAction.

La creación de los controladores la podemos hacer de dos maneras:

  • A través de la consola de comandos
  • A través de Zend Studio 7.0

Creación de controladores a través de la consola de comandos

  • Creación de un nuevo controlador: zf create controller Libro
  • Creación de la acción “anaydir”: zf create action añadir Libro
  • Creación de la acción “editar”: zf create action editar Libro
  • Creación de la acción “borrar”: zf create action borrar Libro
Creación de controladores a través de Zend Studio 7.0

Hacemos clic sobre el directorio /controllers con el botón derecho, seleccionamos New / Zend FrameworkItem.

Paso1. Creació de un nuevo controlador en Zend Framework

Seleccionamos Zend Controller (Template Based) y pulsamos “Next”.

Paso2. Creació de un nuevo controlador en Zend Framework

Indicamos el nombre de nuestro nuevo controller, LibroController.php.

Paso3. Creació de un nuevo controlador en Zend Framework

Pulsamos “Next” e indicamos el template que utilizaremos para crear el controlador “New Zend Controller”.

Paso4. Creació de un nuevo controlador en Zend Framework

Pulsamos “Finish” y se nos creará el controlador en el directorio /controllers. A partir de aquí, añadir las acciones al controlador, es tan sencillo como añadir los métodos públicos que implementen dichas acciones con la nomenclatura especificada anteriormente.

Una vez creados nuestros controladores y sus acciones, las urls desde las que se tendrá acceso a ellos será:

URL Método Action
http://biblioteca.localhost:8080/ IndexController::indexAction()
http://biblioteca.localhost:8080/Libro/anyadir LibroController::anyadirAction()
http://biblioteca.localhost:8080/Libro/editar LibroController::editarAction()
http://biblioteca.localhost:8080/Libro/borrar LibroController::borrarAction()

Base de datos
Una vez definidos los controladores, estamos en disposición de definir las reglas de negocio en las que está basada nuestra aplicación. Estas reglas de negocio son lo que constituyen el Modelo, y estás están basadas en los datos que se encuentran en nuestra base de datos.

Los datos de acceso a nuestra base de datos se lo daremos a la aplicación a trav&eacutre;s del archivo de configuración application.ini, siendo la siguiente:

resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = usuario_base_de_datos
resources.db.params.password = contraseña_base_de_datos
resources.db.params.dbname = nombre_base_de_datos

Creamos la base de datos con la siguiente sentencia:

create table libros (
id int(11) NOT NULL auto_increment,
titulo varchar(100) NOT NULL,
autor varchar(100) NOT NULL,
PRIMARY KEY (id)
);

Insertamos algunos libros en nuestra base de datos:

insert into libros (titulo, autor) values (‘El guardian entre el centeno’, ‘J.D. Salinger’);
insert into libros (titulo, autor) values (‘Todos los hombres del presidente’, ‘Robert Penn Warren’);
insert into libros (titulo, autor) values (‘El señor de los anillos’, ‘J.R.R. Tolkien’);
insert into libros (titulo, autor) values (‘Crónicas Marcianas’, ‘Ray Bradbury’);
insert into libros (titulo, autor) values (‘El jugador’, ‘Fiodor Dostoievsky’);

El Modelo

Zend Framework facilita la clase Zend_Db_Table la cual permite acceder a los datos que se encuentra en la Base de Datos. Para proyectos de mayor envergadura, se suelen crear una o más instancias de la clase Zend_Db_Table, para nuestro ejemplo, con una es suficiente.

Zend_Db_Table es una clase abstracta, por lo que tenemos que crear una que herede de ella. El nombre que tendrá, vendrá definida por el prefijo Model_DbTable_ y el nombre de la tabla con la que se va a interactuar, nombre que además informaremos en la variable protegida $_name.

Zend_Db_Table asume que nuestra tabla tiene una clave primaria que se llama id y que este es un auto incremental. El nombre de la clave primaria se puede modificar si así se desea.

Nuestra nueva clase la crearemos en el archivo Libros.php, dentro de /applications/models/DbTable/Libros.php

Plantillas y Vistas

El componente de Zend Framework que da soporte a las vistas es Zend_View. Este nos permite separar la presentación de la lógica o reglas de negocio que se encuentra en el modelo.

En Zend Framework encontramos las vistas en el directorio “views” y se organizan de la forma: views/scripts/{nombredelcontrolador}/{nombredelaaccion}.phtml.

Como os habréis dado cuenta nuestras vistas ya están creadas (ocurrió cuando creamos los controladores), ahora corresponde que nos ocupemos del “layout”.

En la mayoría de los proyectos hay partes de código HTML que se repite para todas las vistas, por ejemplo: un encabezado, una columna lateral y el pie de página. 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.

Lo primero que debemos hacer es crear el directorio: “application/layouts/” y agregar en nuestro archivo de configuración la siguiente l&iacutenea:

resources.layout.layoutpath = APPLICATION_PATH “/layouts”

Esta línea la colocamos dentro de la sección [production] del archivo de configuración de la aplicación.

Además, necesitamos inicializar nuestra vista en la clase Boostrap, para lo que crearemos otros métodos que comiencen por el prefijo _init justo debajo de _initAutoload(). El método se llamará _initViewHelpers()

	protected function _initViewHelpers(){
		$this->bootstrap('layout');
		$layout = $this->getResource('layout');
		$view = $layout->getView();
		$view->doctype('XHTML1_STRICT');
		$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
		$view->headMeta()->appendHttpEquiv('Cache-Control', 'no-cache');
		$view->headTitle()->setSeparator(' - ');
		$view->headTitle('Biblioteca');
		Zend_Session::start();
	}

A través del método bootstrap() inicializamos la vista para cuando después recuperemos el objeto Zend_Layout a través de getResource(), para después recuperar la vista utilizando el método getView().

Una vez que tenemos la vista instanciada, podemos llamar a varios métodos de ayuda de la vista, que definirán en nuestra vista el código correspondiente para cada uno de ellos.

Por ejemplo, en nuestro ejemplo definimos como métodos de ayuda para nuestra vista:

  • doctype
  • headMeta
  • headTitle

De manera que cuando la vista sea renderizada, y estos métodos llamados, se incorporará a la vista final el código especificado en el método _initViewHelpers().

El código que tendremos en nuestra vista “layout.phtml” y que tendremos en el directorio /application/layouts sería el siguiente para nuestro ejemplo:

<?php echo $this->doctype(); ?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<?php echo $this->headMeta(); ?>
		<?php echo $this->headTitle(); ?>
	</head>
	<body>
		<div id="content">
			<h1><?php echo $this->escape($this->title); ?></h1>
			<?php echo $this->layout()->content; ?>
		</div>
	</body>
</html>

En el código de nuestra página, vemos como tenemos una instancia del objeto de la vista a través de $this, por lo que podemos utilizar esta instancia para llamar a los métodos asociados a la vista y recuperar información que le ha sido asignada a la vista.

Una vez hechos estos cambios y añadido nuestro “layout”, podemos validar cómo se ve la vista en estos momentos, y podemos ver que es la misma que al inicio, pero ahora está servida por nuestro layout. Lo podemos ver en el título de la página que es el que le hemos dado el layout.

Home con título del proyecto de biblioteca en Zend Framework

Estilos

Para la versión de Zend Framework 1.9 se tiene un método de ayuda llamado baseURL() correspondiente a la vista y que nos facilita la url donde se encuentra la raíz del proyecto, para ello, deberemos implementar un método de ayuda en la vista.

Creamos un archivo en /application/Views/helpers/BaseUrl.php. Este método se encontrará dentro de la clase Zend_View_Helper_{HelperName}. Creamos el archivo BaseUrl.php y le añadimos el código:

class Zend_View_Helper_BaseUrl{

	public function baseUrl(){
		//Definimos la url base de la aplicación
		$url = Zend_Controller_Front::getInstance()->setBaseUrl("http://biblioteca.localhost:8080/");
		//Devolvemos la url base de la aplicación
		return $url->getBaseUrl();
	}
}

Una vez creado este método en el archivo /application/Views/helpers/BaseUrl.php podemos crear el CSS (biblioteca.css) con todos los estilos:

body,html {
margin: 0 5px;
font-family: Verdana,sans-serif;
}
h1 {
font-size: 1.4em;
Page 11 of 18
color: #008000;
}
a {
color: #008000;
}
/* Table */
th {
text-align: left;
}
td, th {
padding-right: 5px;
}
/* style form */
form dt {
width: 100px;
display: block;
float: left;
clear: left;
}
form dd {
margin-left: 0;
float: left;
}
form #submitbutton {
margin-left: 100px;
}

Este archivo va en la siguiente ruta /application/public/css/biblioteca.css

La llamada a este archivo, la podemos hacer en el archivo “layout.phtml” una vez creado el archivo, y definido el método de ayuda que nos facilitará la url de la raíz de nuestra aplicación. Para ello, añadimos una línea a nuestro código que haga la llamada al archivo .css de la siguiente manera:

<head>
	<?php echo $this->headMeta()."n"; ?>
	<?php echo $this->headTitle()."n"; ?>
	<?php echo $this->headLink()->prependStylesheet($this->baseUrl()."/css/biblioteca.css")."n"; ?>
</head>

Listado de libros

Una vez configurada la aplicación, creado los controladores, el modelo, y el esqueleto de las vistas, estamos en disposici&ooacute;n de crear los controladores. Comenzaremos por el listado de libros, el cual se va a ofrecer en la Home de la aplicación, y según la tabla creada anteriormente de controladores y acciones que se realizan desde ellos, tenemos:

Página Controlador Acción
Home Index index
Añadir libro Libro index
Editar libro Libro editar
Borrar libro Libro borrar

Por lo tanto, en el IndexController vamos a definir el método indexAction:

public function indexAction(){
//Título de la vista
    	$this->view->title = "Mis Libros";
    	//Añadimos el título a la vista
	$this->view->headTitle($this->view->title, 'PREPEND');
	//Creamos el modelo, para la consulta de libros
	$libros = new Model_DbTable_Libros();
	//Devolvemos a la vista todos los libros
	$this->view->libros = $libros->fetchAll();
}

fetchAll() es una función de Zend_Db_Table_Rowset que nos permite interactuar sobre las filas devueltas en la consulta. Ahora ya estamos en disposición de crear el código del archivo /application/views/scripts/index/index.phtml

<p><a href="<?php echo $this->url
(array('controller'=>'libro','action'=>'add'));?>">
A&ntilde;adir nuevo libro</a></p>
<table>
	<tr>
		<th>T&iacute;tulo</th>
		<th>Autor</th>
		<th>&nbsp;</th>
	</tr>
	<?php foreach($this->libros as $libro) : ?>
	<tr>
		<td><?php echo $this->escape($libro->titulo);?></td>
		<td><?php echo $this->escape($libro->autor);?></td>
		<td>
			<a href="<?php echo $this->url
(array('controller'=>'libro', 'action'=>'update', 'id'=>$libro->id));?>">Editar</a>
			<a href="<?php echo $this->url(array('controller'=>'libro',	'action'=>'delete', 'id'=>$libro->id));?>">Borrar</a>
		</td>
	</tr>
	<?php endforeach; ?>
</table>

La ejecución del código anterior, nos da como resultado la página principal de nuestra aplicación donde vemos nuestro listado de libros de la biblioteca:

Home y listado de libros del proyecto de biblioteca en Zend Framework

Añadir nuevos libros

Para poder añadir nuevos libros en nuestra biblioteca, necesitamos realizar las siguientes acciones:

  • Crear un nuevo formulario
  • Tratar los datos recibidos del formulario anterior e insertarlos en BBDD

Para la creación del formulario, utilizaremos Zend_Form, quien nos permite crear un formulario, y validar los datos de entrada del formulario. Crearemos la clase Form_Libro que heredará de Zend_Form para definir nuestro formulario.

Creamos el archivo Libro.php en /application/forms/Libro.php

<?php
class Form_Libro extends Zend_Form{

	public function __construct($options = null){
		parent::__construct($options);

		$this->setName('libro');
		$id = new Zend_Form_Element_Hidden('id');

		$autor = new Zend_Form_Element_Text('autor');
		$autor->setLabel('Autor')
		->setRequired(true)
		->addFilter('StripTags')
		->addFilter('StringTrim')
		->addValidator('NotEmpty');

		$titulo = new Zend_Form_Element_Text('titulo');
		$titulo->setLabel('Titulo')
		->setRequired(true)
		->addFilter('StripTags')
		->addFilter('StringTrim')
		->addValidator('NotEmpty');

		$submit = new Zend_Form_Element_Submit('submit');
		$submit->setAttrib('id', 'submitbutton');
		$this->addElements(array($id, $autor, $titulo, $submit));
	}
}
?>

Dentro del constructor, especificamos los dos campos que son necesarios para dar de alta un nuevo libro en nuestra biblioteca: autor y título, así como el botóe;n a través del cual desencadenaremos la validación de datos y el envío de estos a nuestro servidor. Para los campos, hemos añadido dos filtros “StripTags” y “StringTrim” que eviten la introducción de código HTML o de espacios en blanco no deseables. Además, los hemos definido como no vacíos.

A partir de ahora debemos mostrar el formulario, y tratar los datos recibidos desde el, acciones que se realizar´n en el Controlador LibroController dentro del método anyadirAction()

En /application/controllers/LibroController.php añadimos el siguiente código:

	public function anyadirAction(){
		//Indicamos el título de la página
		$this->view->title = "Añadir nuevo libro";
                //Añadimos el título, delante del título definido por defecto para nuestra aplicación
		$this->view->headTitle($this->view->title, 'PREPEND');
		//Instanciamos el formulario
		$form = new Form_Libro();
		//Especificamos el nombre del botón de envío del formulario
		$form->submit->setLabel('Añadir');
		//Asignamos a la vista el formulario
		$this->view->form = $form;

                if ($this->getRequest()->isPost()){ //Si se envían los datos, los recuperamos del formulario
			$formData = $this->getRequest()->getPost();
                        if ($form->isValid($formData)){ //Validamos que los datos recibidos sean correctos
				//Asignamos los valores recuperados a variables
				$autor = $form->getValue('autor');
				$titulo = $form->getValue('titulo');
				//Creamos el modelo
				$libros = new Model_DbTable_Libros();
				//Insertamos el nuevo libro en nuestra BBDD
				$libros->addLibro($titulo, $autor);
                                //Redireccionamos a la home, donde podremos ver el nuevo libro introducido.
				$this->_redirect('/');
                        }else{ //Si los datos del formulario, no son válidos, se muestra el formulario con los datos de nuevo.
				$form->populate($formData);
			}
		}
	}
1<p />
Para finalizar, nos queda hacer que el formulario salga, renderizarlo, para ello, crearemos el script a&ntidel;adir.phtml en /application/views/scripts/libro/anyadir.phtml<p />
1
<?php echo $this->form ;?>

Si validamos la nueva funcionalidad, veremos cómo finalizamos al final del proceso en la home de la aplicación, con nuestro nuevo libro introducido en la biblioteca.

Listado de libros del proyecto de biblioteca en Zend Framework después de añadirle un libro

Editar un libro

Editar un libro es muy parecido a añadir un libro. Comenzaremos implementando la acción correspondiente de nuestro controlador. En este caso la acción “editar” de nuestro controlador “Libro”.

Añadimos el siguiente código en /application/controllers/LibroController.php

public function editarAction(){
//Indicamos el título de la página
$this->view->title = "Editar Libro";
//Añadimos el título, delante del título definido por defecto para nuestra aplicación
$this->view->headTitle($this->view->title, ‘PREPEND’);
//Instanciamos el formulario
$form = new Form_Libro();
//Especificamos el nombre del botón de envío del formulario
$form->submit->setLabel(‘Guardar’);
//Asignamos a la vista el formulario
$this->view->form = $form;

if ($this->getRequest()->isPost()) {//Si se envían los datos, los recuperamos del formulario
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {//Validamos que los datos recibidos sean correctos
//Asignamos los valores recuperados a variables
$id = (int)$form->getValue(‘id’);
$autor = $form->getValue(‘autor’);
$titulo = $form->getValue(‘titulo’);
//Creamos el modelo
$libros = new Model_DbTable_Libros();
//Actualizamos los datos del libro
$libros->updateAlbum($id, $autor, $titulo);
//Vamos a la página principal de la aplicación
$this->_redirect(‘/’);
}else{//Si los datos del formulario, no son válidos, se muestra el formulario con los datos de nuevo.
$form->populate($formData);
}
}else{//Mostramos los datos del libro en caso de no haber enviado los datos al servidor para actualizar el libro
$id = $this->_getParam(‘id’, 0);
if ($id > 0) {
$albums = new Model_DbTable_Libros();
$form->populate($albums->getAlbum($id));
}
}
}

La principal diferencia la tenemos en el momento en el que se sirve el formulario, sin haber recibido los datos previamente del formulario, donde se recuperan los datos del libro seleccionado y se muestran estos para su actualización.

Para finalizar, nos queda hacer que el formulario salga, renderizarlo, para ello, crearemos el script añadir.phtml en /application/views/scripts/libro/editar.phtml

<?php echo $this->form ;?>

Si hacemos un test, y modifcamos el título de “El jugador”, por “El Jugador”, podemos ver finalmente la vista a la que regresamos como quedaría:

Edición de libros del proyecto de biblioteca en Zend Framework

Guardamos el libro, y comprobamos la modificación del título del libro:

Listado de libros del proyecto de biblioteca en Zend Framework después de editar uno de ellos

El título, “El Jugador” ha sido cambiado pasando la “j” a mayúsculas en la vista anterior.

Borrar un libro

Para finalizar nuestra aplicación, necesitamos poder borrar un libro de nuestra biblioteca. Desde un principio, tenemos asociado a cada libro, un enlace que nos lleva a borrar un libro, pero antes de realizar el borrado, lo que haremos será solicitar una confirmación de la acción.

Cuando se pulse el enlace “Borrar”, se desencadenará la acción definida en el método borrarAction() de nuestro controlador LibroController.

En /application/controllers/LibroController.php añadimos el siguiente código:

	public function borrarAction(){
		$this->view->title = "Borrar libro";
		$this->view->headTitle($this->view->titulo, 'PREPEND');
		if ($this->getRequest()->isPost()) {
			$del = $this->getRequest()->getPost('del');
			if ($del == 'Yes') {
				$id = $this->getRequest()->getPost('id');
				$libros = new Model_DbTable_Libros();
				$libros->deleteLibro($id);
			}
			$this->_redirect('/');
		}else{
			$id = $this->_getParam('id', 0);
			$libros = new Model_DbTable_Libros();
			$this->view->libro = $libros->getLibro($id);
		}
	}

Al igual que en los formularios de añadir y editar un libro, utilizamos el método isPost() para diferenciar si lo que estamos haciendo es mostrar la información recuperada en caso de ser false o para realizar la acción definida si es true.

Ahora, ya podemos crear la vista del formulario, tal y como se expone a continuación:

Creamos el archivo borrar.phtml en /application/views/scripts/libro e insertamos el siguiente código:

<p>¿Estás seguro que quieres borrar el libro
'<?php echo $this->escape($this->libro['titulo']); ?>' por
'<?php echo $this->escape($this->libro['autor']); ?>'?
</p>
<form action="<?php echo $this->url(array('action'=>'borrar')); ?>" method="post">
	<div>
		<input type="hidden" name="id" value="<?php echo $this->libro['id']; ?>" />
		<input type="submit" name="del" value="Si" />
		<input type="submit" name="del" value="No" />
	</div>
</form>

A partir de aquí, si pulsamos “Si” procederemos a su borrado, y si es “No”, volveremos a nuestro listado de libros.

Descarga de código fuente de la Aplicación demo en Zend Framework

¡¡¡Y esto es todo para tener nuestra biblioteca en completo funcionamiento!!!

Aplicación demo en Zend Framework, 9.5 out of 10 based on 2 ratings
Comparte y disfruta:

Si te ha gustado este artículo, te puede interesar ...



Hosting barato

110 comments

  1. Sergio
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Buenas Jose Carlos, gracias por el tutorial que me ha servido de gran ayuda para resolver algún problema que tenia… pero sigo teniendo una duda existencial… el Zend_Db::factory donde se mete? Yo lo he puesto en el index.php pero algo me dice que no va ahí! En el boostrap en _iniAutoload? Tengo muchas dudas sobre el tema index/bootstrap, me recomiendas algún manual donde se explique con claridad todos estos aspectos? Porque sigo sin aclararme con los manuales que tengo y encuentro

    Mersí

  2. José Carlos
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    @Sergio
    Hola, para el tema del Zend_Db te recomiendo que te crees una clase propia que forme parte de tu librería que puedas reutilizar para otros proyectos, donde crees la conexión, la cierres, insertes, borres y actualices información de tus tablas. Respecto a información, la cosa está bastante mal, pero si te sirve de ayuda, puedes mirar la guía de referencia de Zend Framework sobre Zend_Db. Una vez tengas hecha esa clase, solamente la tendrás que llamar desde tu modelo, que es donde implementarás tu modelo de negocio.

    Espero haberte sido de ayuda.

    Salu2,

    José Carlos

  3. Sergio
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Gracias… sobre todo por tu rápida respuesta, un placer haber encontrdo tu blog, agregado queda a mi bookmark ;)

  4. José Carlos
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    @Sergio

    ¡¡¡Gracias a ti!!!

  5. ricardo saucedo
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    muy buen tutoriall m gustaria mucho si t puedes conectar te dejo mi correo en el post quisiera q me ayudes, tu proy lo toi usando pa un pract en una materia pero m faltan cosas porfa si m puedes ayudar asi t mando lo q tengo mil gracias
    y muchas gracias x el tuto

  6. Guitarrero
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Muy bueno felicidades, ta muy claro.

  7. Arian
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Es una traduccion?
    La verdad lo encotre muy incompleto, estoy aprendiendo y en las primeras lineas ya encontre problemas.

    Por ejemplo cuando ejecuto la consulta tal como esta aqui sale error.
    Por otro lado tampoco se explica como crear el modelo.

    Gracias por el material, pero lo veo incompleto, un tanto confuso para los principiantes.

  8. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola!

    Ya he leído varios manuales sobre los comienzos que hay que seguir para empezar a trabajar con Zend Framework…y siempre me he quedado atascada en algún punto. Este me parece interesante…pero hay algunas cosas que a mi no me funcionan..como por ejemplo el Virtual Host…lo obvié y continué accediendo a través de ‘http://localhost/Libros/public…pero después de crear el primer controlador….ya no accedo de ninguna forma a él ni a sus métodos….algún manual o alguna otra idea para que esto funcione de forma correcta…soy principiante/a y seguro que he cometido algún fallo tonto de esos que te hacen estancar.

    Gracias de todas formas.

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Olga,

      Hola, antes de nada, veo que eres novata, por lo que te recomiendo que vayas con tranquilidad, y no te pongas nerviosa. Si sigues paso a paso el cómo crear el servidor virtual, podrás configurarlo sin problemas. No olvides reiniciar el servidor, una vez cambiada la configuración. Para probar que todo funciona correctamente, puedes hacer una llamada a un archivo php donde te de las características de la instalación. Bastaría con crear un fichero que se llame, por ejemplo, info.php, y dentro que contenga el siguiente código:

      Luego, lo llamas directamente, http://virtualhost-localhost:puerto/info.php

      Si el puerto que tienes configurado es el 80, y tienes el Skype abierto, no te funcionará, porque escucha por el mismo puerto.

      Lo primero, has de conseguir configurar el servidor, porque si no, lo siguiente se te va a complicar.

      Espero haberte ayudado.

      Salu2,

      José Carlos

  9. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    ¿Dónde se coloca la variable ‘$_name’ de la que se habla en la parte de “El Modelo”?

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Olga,

      Hola, al final del artículo, puedes descargarte el código fuente, para revisarlo, pero antes, recuerda, has de poder configurar correctamente el servidor.

      Salu2,

      José Carlos

  10. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    No me crea las vistas al crear los controladores :-(

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Olga,

      Como te he comentado, antes de pretender que te cree las vistas, se debe configurar correctamente el servidor. Si este está configurado correctamente, sólo con crear el proyecto por defecto, te saldrán las vistas creadas por defecto, antes de modificar nada para hacer tu aplicación.

      Salu2,

      José Carlos

  11. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Soy novata, novatísima….no me has puesto el código del archivo info.php…:-(

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      Persona, si, te lo puse, pero se lo comió el comentario. Es muy sencillo, has de crear un fichero que se llame, por ejemplo, info.php, y en el poner la instrucción de php phpinfo();

  12. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Esto es lo que he puesto en httpd-vhosts:

    #Enrutaxhispania

    ServerName Enrutaxhispania.localhost
    DocumentRoot C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/Enrutaxhispania/public

    AllowOverride All

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      ¡¡¡Ojo!!! ¡¡¡La instalación de Apache te dará problemas, porque lo tienes dentro de una ruta con espacios en blanco!!!

      Mejor hacer la instalación una ruta sin espacios en blanco, por ejemplo: C:/Apache2.2/

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      No, deberías poner solamente el nombre del servidor, en tu caso, Enrutaxhispania.localhost, ya que este te mapea con la ruta completa, en tu caso C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/Enrutaxhispania/public Por lo que si quieres llamar a una página distinta a index.htm o index.php según tengas configurado Apache la llamada sería, por ejemplo: http://Enrutaxhispania.localhost/info.php

      Me da la sensación que no has validado la instalación de Apache, y es algo que deberías hacer antes de crear nada y lanzarte a programar, primero validar la instalación de apache con php y luego lo demás.

      Te lo comento, por lo mismo que te he dicho antes, dudo que funcione la instalación con espacios en blanco en la ruta de acceso al servidor de Apache.

  13. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola Jose Carlos…he vuelto a realizar la instalación de MySQL, Apache y PHP, instalando el servidor Apache 2.2 en C:Apache2.2, como me dijiste para que la ruta no tuviera espacios, y ahora cuando intento acceder al archivo de prueba de php, a través de http://localhost/info.php, y la respuesta es: “Forbidden

    You don’t have permission to access /info.php on this server”…qué habré hecho mal ahora?

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      En Apache bajo plataforma Windows esto ocurre por 2 razones:
      1.- Error en el Path.- Colocar el backSlash () en lugar del Slash (/) y coloocar “/” al final del path

      2.- Utilizar comandos como User y Group dentro del VirtualHost

      Mira a ver si es por alguna de estas razones. También puedes revisar los logs de error que te genera Apache para ver a qué se debe.

      Intenta antes de nada, probar que funciona solamente con http://localhost. Te debe salir una página de Apache. Si funciona, es que Apache está bien instalado. Luego, prueba con http://localhost/info.php para validar que php esté bien instalado.

  14. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    En el PATH te refieres a las variables de sistema…la verdad es que están igual que antes…y previamente funcionabla bien, antes de cambiar Apache. Cuando pongo sólo http://localhost/ aparece la pagina en la que pone “It works”…pero cuando agrego un archivo ya es cuando da el problema.

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      No, a la ruta que pones cuando se define el virtual host. No obstante, la instalación de Apache es correcta, porque al poner la url http://localhost te sale el mensaje de It Works!!! Si el archivo info.php está correctamente ubicado en el directorio “htdocs” de la instalación de Apache, y te sale ese mensaje, debe ser configuración de php con Apache el motivo del error, y habría que revisar eso. Si no lo tienes en ese directorio, pon el archivo en ese directorio, porque es el raiz según lo has definido. Para buscar ayuda sobre el error, puedes copiar y pegar el mensaje de error que te da y hacer una búsqueda en Google, y obtendrás respuestas, entre las que muy posiblemente esté la de tu solución.

      Es que los motivos pueden ser múltiples, y así a ciegas es dificil. Pero bueno, recuerda, Apache está instalado correctamente. Ahora hace falta instalar correctamente php y configurarlo con Apache.

      Te paso una guia: http://www.maestrosdelweb.com/editorial/phpmysqlap/ donde está todo explicado muy bien, y que si lo sigues paso a paso, con cuidado. Lo tendrás todo configurado. Luego faltaría instalar Zend Framework y crear los o el virtual-host.

      Espero que te sirva de ayuda.

  15. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Lo que sale en el error es:
    [Fri May 06 20:30:46 2011] [notice] Apache/2.2.17 (Win32) PHP/5.3.6 configured — resuming normal operations
    [Fri May 06 20:30:46 2011] [notice] Server built: Oct 18 2010 01:58:12
    [Fri May 06 20:30:46 2011] [notice] Parent: Created child process 6440
    Warning: DocumentRoot [C:/Apache2.2/docs/dummy-host.localhost] does not exist
    Warning: DocumentRoot [C:/Apache2.2/docs/dummy-host2.localhost] does not exist
    Warning: DocumentRoot [C:/Apache2.2/docs/dummy-host.localhost] does not exist
    Warning: DocumentRoot [C:/Apache2.2/docs/dummy-host2.localhost] does not exist
    [Fri May 06 20:30:47 2011] [notice] Child 7456: All worker threads have exited.
    [Fri May 06 20:30:47 2011] [notice] Child 7456: Child process is exiting
    [Fri May 06 20:30:47 2011] [notice] Child 6440: Child process is running
    [Fri May 06 20:30:47 2011] [notice] Child 6440: Acquired the start mutex.
    [Fri May 06 20:30:47 2011] [notice] Child 6440: Starting 64 worker threads.
    [Fri May 06 20:30:47 2011] [notice] Child 6440: Starting thread to listen on port 80.

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      ¿Que hay en la ruta “C:/Apache2.2/docs/dummy-host.localhost”? Esto lo tienes que mirar tu con detenimiento, porque yo no sé que hay, ni qué quieres crear, ni instalar, ni nada.

      Siento no poderte decir nada más. Pero si te está diciendo que no existe, será por algo.

  16. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    ¿De dónde se supone que coge el “Document Root”?…quiero decir, en qué archivo se configura ese valor?…porque no aparece la carpeta “docs” dentro de “C:Apache2.2″

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      El “Document Root” se configura desde el archivo httpd.conf de Apache que se encuentra dentro del directorio /conf de la instalación de Apache.

      Salu2,

      José Carlos

  17. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Puede tener que ver algo con que haya cambiado la ruta de la instalación de Apache a C:/Apache2.2, porque antes no me pasaba esto…cuando lo instalaba en la ruta por defecto, la que tenía los espacios. He seguido al detalle los pasos del manual que me enviaste….y vuelve a aparecer el mismo error de queno encuentra esos documentoss, desde luego dentro de C:Apache2.2, no hay carpeta “docs”

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      No tiene nada que ver la ruta donde instalas Apache para que te salga o no el directo. Y este directorio no es “docs” si no “htdocs” y se encuentra en la raiz del directorio donde has hecho la instalación de Apache.

      Salu2,

      José Carlos

  18. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Decía lo del “docs” porque si te fijas en los Warnings aparece que no encuentra unos archivos incluídos en ese supuesto directorio “docs” que en mi servidor no aparece. He probado a instalar phpmyadmin, y ahora el error de prohibido el acceso, al guardar esa carpeta dentro de “htdocs”, sale automáticamente sólo con intentar acceder a http://localhost/. Te decía lo de la carpeta C:/Apache2.2, por si era algún tema de permisos por estar directamente en C:/ y no dentro de C:/Program Files…es que ya no se qué pensar….perdona por ser tan pesada

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      Vale, pero si te sale ese warning, es que alguna aplicación web debe estar llamando a esa ruta, desconozco cual. Pero bueno, eso no es de la instalación si no de la aplicación web en cuestión.

      ¿Has configurado correctamente los permisos de acceso a los directorios que hay en htdocs?

      Yo tengo:

      Options Indexes FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all

  19. José Carlos
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Lo anterior iría dentro de …

    < Directory "G:/Apache/htdocs" >
    < /Directory>

  20. José Carlos
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Ah, sin espacios entre < y >, y el resto de la cadena

  21. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Ok, estoy desinstalándolo todo, voy a borrar todas las carpetas que tenía relacionadas, por si interfieren en algo, y vuelvo a reinstalar todo, a ver si consigo solucionarlo. ¿Es mejor la instalación paso a paso, que hacerlo con Xampp por ejempl0, no?

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      Yo la instalación la hice paso a paso, prefiero saber en todo momento qué hago más o menos, que instalar Xamp donde ya me lo da todo hecho y luego cuando tengo que modificar algo, como no me he peleado con lo otro, no sé a qué se debe todo lo que no me funciona. Xamp es una buena solución si te funciona, claro.

      Si instalas desde cero, ve con cuidado y sin prisas, siguiendo el manual que te pasé a través de una url.

  22. Olga
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    A ver otra pregunta, en el manual que me pasaste…dice que copie el php.ini-dist y lo renombre como php.ini, pero en mi caso, al descargar el xip de PHP 5.3.6, viene php.ini-development y php.ini-production, ¿cuál de los dos tengo que coger?

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      Puedes utilizar cualquiera de los dos, coge el php.ini-developmente, y arreglado. Veo que te estás bajando la versión 5.3.6 de php. Espero que no tengas problemas con php, porque la versión que estás instalando es la 5.3.6 y entre la 5 y la 5.3 hubo cambios importantes. Pero ahora no sabría decirte si funcionaría o no. Recuerda probar todo lo que instales antes de avanzar. Una vez instalado APache, pruebalo, una vez isntalado php pruebalo.

  23. Hero
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    muy buen trabajo el realizado por los desarrolladores de Zend y me gusta este blog me parece que el autor se dio trabajo por presentar y el esfuerzo sirvio muy bien explicado gracias.

  24. Mirabellha
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola!

    He instalado Zend Framework y creado un proyecto, al crear el primer controlador, UsuarioController, y tres acciones correspondientes, anyadirAction, editarAction y borrarAction, cuando intento acceder a la página correspondiente, http://viajamos.localhost/Usuario/anyadir, me aparece el siguiente error:

    An error ocurred

    Application error

    ¿Por qué puede ser?

    Muchas gracias

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola,

      Con esa información, difícil ayudar.

  25. Víctor
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola Jose Carlos, en primer lugar enhorabuena por el trabajo, estoy empezando con Zend Framework y tu ejemplo es clarificador :)

    Tengo una duda de funcionalidad con Zend Studio a la hora de crear las acciones dentro de un controlador. Lo hago a través de consola, pero como tu dices se puede hacer desde el propio código… pero como? si lo pongo a “pelo” las vistas no se crean y aunque yo cree la vista a pelo no me funciona bien :P

    Muchas gracias por tu ayuda!

  26. José Carlos
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    @Victor

    Hola, antes de nada, muchas gracias.

    Para crear las acciones, si estás con Zend Studio, te aconsejo que las hagas a través de Zend Studio que te lo crea todo perfectamente. Desde código te crea el controlador, pero el action lo debes crear siguiendo el patrón de nombres establecido.

    Espero haberte sido de ayuda.

    Salu2,

    José Carlos

  27. Víctor
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola José Carlos, perdona, pero no entiendo como lo debo hacer, creo que es tan fácil que no lo voe XD

    Yo quiero usar ZendStudio sin estar con la consola. Pero no entiendo como lo tengo que hacer, el controlador lo creo igual que comentas en el post, pero las acciones… ¿se escriben directamente? la última vez que lo probe no me reconocía esto, además así no me crea la vista, es donde me pierdo, ¿cómo se agregan las acciones?

    Gracias por tu tiempo :)

  28. José Carlos
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    @Victor

    Hola, como te comenté, el controlador lo puedes crear vía Zend Studio, sin problemas, y una vez creado, en el puedes añadir las acciones que consideres oportunas.

    Las vistas, las debes añadir tu donde indico en el tutorial: views/scripts/{nombredelcontrolador}/{nombredelaaccion}.phtml

    Para hacer una prueba, una vez creado el controlador, a la acción por defecto (index) creale la vista, según lo indicado, y en ella, no hace falta que construyas ningún formulario ni nada, con que pongas un comentario, como el famoso “Hola. Mundo!!!” es suficiente. Entonces, llamas al controlador, y por defecto, te dará esa vista.

    Espero haberte podido ayudar.

    Salu2,

    José Carlos

  29. Víctor
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Ea! ahora sí, era sencillo. Creo que alguna vez lo intenté así y no me salió y me enroqué en que así no se debía hacer, siempre pensé que debía pasar por otro proceso.

    Gracias José Carlos ;)

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      De nada!!!

  30. jaime masdelomismo
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Me encanta tu tutorial. Es justo lo que necesitaba!. Un punto de partida con las operaciones CRUD hechas en Zend.

    Con gente como tú, aprender frameworks nuevos es más fácil!!

    Gracias!!!

    pd: aún así, he tenido que hacer algunas modificaciones, para que funcione con el zend 1.11.11. Pero millones de gracias en cualquier caso.

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      @Jaime

      Hola, muchas gracias por tus comentarios.

      Salu2,

      José Carlos

  31. Wlises R
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    A la verdad que aprender Zend es casi aprender otro lenguaje de programacion, recomiendo CI (CodeIgniter) para principiantes en esto de MVC.

    CI para proyectos de cualquier calibre.

    Saludos, desde R.D.

  32. Rétrolien : Celebrity Blog
  33. eduardo
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    seria bueno que pusiera mas ayuda de zend ya que tengo que hacer una web y necesitomucho de este tipo de tutoriales

    • José Carlos
      VA:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VA:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      También se puede ayudar en hacer artículos para que todos aprendamos, y no esperar a que nos lo den todo hecho.

  34. Juan
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola gente , a ver si alguien me echa un cable, es que me paso lo mismo con el ejemplo de esta pagina, y con el ejemplo de Beginig Zend Framework , un libro excelente, pero en ingles. Bueno a lo que vamos:
    Me tira un error: Fatal error: Class ‘Form_Libro’ not found in C:xampphtdocstestzfapplicationcontrollersDatabaseController.php on line 17, y es que claro como le especificas al controlador donde instancias la clase, que la clase esta en otro sitio, en el ejemplo esta en application/forms/Libro.php
    Por cierto dicen que CI es el mas facil para aprender y uno de los que mas usan para grandes aplicaciones es symphony. Aunque actualmente esta ganando mucho terreno el Zend, de hecho la mayoria de los laburos de programador web de hoy en dia, requieren zend.

  35. idaluz
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Muy buen tutorial, felicitaciones.

  36. idaluz
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Excelente tutorial, felicitaciones.

  37. Favio
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

    Hola, soy nuevo en el manejo de zend framework y la verdad tengo una consulta y espero que pueda ayudarme, no tengo idea porque cuando muestro información almacenada en la base de datos, en vista, es decir en la pagina principal, esta no muestra las tildes y ñ, nose que es lo que se debe hacer para que fmuestre dichas letras. Espero que pueda ayudarme.

    • José Carlos
      VN:F [1.9.20_1166]
      Rating: 0 (from 0 votes)
      VN:F [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)

      Hola Favio!!!

      El problema no es del framework, si no de la codificación de la página. Lo mejor es tenerla codificada para UTF-8 y estos caracteres no escribirlos literalmente si no su equivalente html, tal y como vienen definidos en esta otra web: http://www.degraeve.com/reference/specialcharacters.php Por ejemplo, la “ñ” se codificaría con “ñ”.

      Salu2,

      José Carlos

Escribe un comentario


siete + = 14

Puede usar HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>