Symfony Capa de Controladores (Lógica de presentación) Rodolfo Campos camposer@softclear.net http://www.softclear.net



Documentos relacionados
all: doctrine: class: sfdoctrinedatabase param: dsn: mysql:host=localhost;dbname= bdd_erhaj username: erhaj password: admin

Symfony. Framework para el desarrollo de aplicaciones Web con PHP

Symfony Entorno de trabajo para el desarrollo de aplicaciones. Rodolfo Campos

Desarrollo de sitios web con PHP y MySQL

Introducción a PHP. * No es necesario declarar previamente las variables.

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Gestión de Permisos. Documento de Construcción. Copyright 2014 Bizagi

Sesiones en PHP. Área de Ingeniería Telemática

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

El Área de Clientes de la web de Gaia permite descargar la Versión General publicada de su aplicación Gaia.

Redes y Consultoría al Comercio Exterior. Manual Técnico

Sistema de Información de Compras y Contrataciones del Estado (SICE) Gestión y búsqueda de pedidos para compras comunes

PHP: Interacción con HTML

Modulo 1 El lenguaje Java

MANUAL DE USUARIO DE OFICINA CONECTADA

[MANUAL DE USUARIO VUCE DGS0005] [Escribir texto] MINISTERIO DE COMERCIO EXTERIOR Y TURISMO - MINCETUR. Ventanilla Única de Comercio Exterior - VUCE

Desarrollo y servicios web

Que es Velneo vdataclient V7?

Herramientas. web 2.0. Dropbox es una aplicación gratuita que permite compartir archivos entre diferentes dispositivos.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Trabajo de Fin de Grado Héctor Olivares Rivero Proyecto omrocket Manual de Instalación

QUÉ ES HOMEBASE? Encontrar Libros

FSx-Connector Guía rápida del Módulo pcron (Tareas Programadas) Créditos

Guía del usuario de DocuShare Agent

Instalación y Configuración del IIS para la facturación WEB en Aspel-SAE 6.0

SESIÓN 1: POWER POINT 2013

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

Retrospect 9 para Mac Anexo de la Guía del usuario

SMS PUSH SMS ENCUESTAS INTERNET FAX

DATOS EN SERVIDOR DE RED PROCEDIMIENTO PARA INSTALACIÓN Y CONFIGURACIÓN DE BASES DE DATOS EN SERVIDORES DE RED

Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015.

CORREO ELECTRÓNICO GMAIL. 1 Enviar correo electrónico Acceder a una cuenta de correo electrónico... 2

PHP 5.6 Desarrollar un sitio web dinámico e interactivo

Práctica 1. Uso básico de servicios cliente-servidor

Instalación y Configuración. Libertya BI 1.0

1 El plan de contingencia. Seguimiento


Ofimática Aplicada UNIDAD II : HERRAMIENTAS DE ESCRITORIO WORD

Sistema de Administración de Farmacias Descripción de la Arquitectura Versión 1.4. Historia de revisiones

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

Compartir en línea. Cargar archivos. Principios básicos. Compartir en línea

Procedimiento. Actualización de Kit de Conexión de Comercios Webpay versión 5.X a Canales Remotos Operaciones. Transbank S.A.

Guí a Ra pida Word 2010.

Software para Seguimiento de Clientes. Descripción del Producto

Contenido QUÉ ES SERVIDOR CLOUD?... 3 ACCESO AL SERVIDOR CLOUD... 3 ADMINISTRACIÓN DEL SISTEMA... 6

Actualización de versión a Bizagi 10.x

Manual del Protocolo XML-RPC de Mensajería Negocios

WINDOWS : TERMINAL SERVER

CÓMO MANEJAR SU NUEVO SITIO WEB SOBRE DRUPAL Manual técnico y de usuario. Pontificia Universidad Javeriana Grupo PSU CDI

ModusOne. ModusOne Client. Version: 5.2

1. INTRODUCCIÓN 3 2. INSTALACIÓN DE LA APLICACIÓN PACK PYME Proceso de Instalación y Arranque... 5

Manual del Administrador del Sitio del Gestor de Contenidos de Revistas Científicas de Grupo Aula Médica

S I S T E M A E N L Í N E A

EXTENSIÓN DE UML PARA APLICACIONES WEB

Guía de migración a firma HMAC SHA256 Conexión por Redirección

Manual de Usuario Servidor Cloud

DATOS EN SERVIDOR DE RED PROCEDIMIENTO PARA INSTALACIÓN Y CONFIGURACIÓN DE BASES DE DATOS EN SERVIDORES DE RED

GUÍA DE USUARIO PARA EL AVISO DE PRÉSTAMOS, APORTACIONES PARA FUTUROS AUMENTOS DE CAPITAL O AUMENTOS DE CAPITAL RECIBIDOS EN EFECTIVO 86-A

MANUAL DE USUARIO CONTROL LOGÍSTICO DE TIEMPOS

Instalación y configuración inicial del sistema SIU-Kolla Versión 3.0.0

PHP - II. Elaborador por: Edgar Manuel Amézquita y Sebastián González R.

Importador Universal - Operaciones

EL FRAMEWORK SYMFONY. La Arquitectura Modelo-Vista-Controlador (MVC) Symfony 1.2. SYMFONY se basa en el diseño web a tres capas MVC.

Guías de ayuda para la configuración de la privacidad y seguridad de las redes sociales

Sesión 23. Luisa Fernanda Rincón Pérez

Manual de Integración CubeCart

MICROSITIOS. Perfiles

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

GUÍA DEL ADMINISTRADOR DE TI

Curso PHP Módulo 1 R-Luis

INSTRUCCIONES CIERRE EJERCICIO 2014

Para poder acceder al sistema sólo deberá ingresar la siguiente liga desde el navegador de su preferencia:

Digitales Emitidos Versión 1.0

Combinar comentarios y cambios de varios documentos en un documento

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

Qué es el pharming? Cómo se lleva a cabo un ataque de pharming? Pharming

pgp4usb cifrar tus texto en mensajes de correo electrónico y cifra tus archivos

Sophos Anti-Virus para Mac OS X Ayuda

Práctica 2: El problema de la sección crítica

FECSA TIENDA ONLINE INTERNET SHOP

Usar Office 365 en un iphone o ipad

MANUAL PLATAFORMA SMSWORLD

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

APLICACIÓN ELECTRÓNICA DE INVESTORS TRUST PARA INTRODUCTORES

Guía del usuario. Centro de Facturación de UPS

Guía de Instalación y Administración

Tipos de variables, características generales y aspectos específicos de PHP de estos elementos básicos de la programación.

Manual correo electrónico sobre webmail

SMS Gestión. manual de uso

Acronis License Server. Guía del usuario

Informática I Notas del curso

9. Objetos y clases Clases

*si tuvieron algún problema pueden verificar la documentación oficial Vamos a crear una BD llamada droid_login como lo muestra la siguiente imagen:

Guía de Usuario. Seguridad Internet. Triara.com SA de CV. Todos los derechos reservados

CIMA. MANUAL DE USUARIO

Transcripción:

Symfony Capa de Controladores (Lógica de presentación) Rodolfo Campos camposer@softclear.net http://www.softclear.net

Capa de Controladores La Capa de controladores o Lógica de presentación contiene el código que vincula la lógica de negocios con la presentación.

Controladores de Frente (Front Controllers) Tienen la función de: Definir las constantes principales. Localizar las librerías de Symfony. Instanciar e inicializar las clases principales de Symfony. Cargar la configuración. Decodificar la petición URL para determinar la acción a ejecutar y los parámetros que viajan en ella. Si la acción no existe, redirigir a la acción de error 404. Activar filtros. Ejecutar los filtros (primera ejecución) petición. Ejecutar la acción y pintar la vista. Ejecuar los filtros (segunda ejecución) respuesta. Enviar la respuesta al Cliente.

Controladores de Frente (Front Controllers) En la carpeta web del proyecto se pueden conseguir los controladores de frente por omisión: index.php (o app1.php en caso de existir más de una aplicación en el proyecto). Para entorno de producción. app_dev.php. Para entorno de desarrollo.

Controladores de Frente (Front Controllers) Para agregar un nuevo entorno de ejecución simplemente debe crear un nuevo front controller. Por ejemplo: si desea agregar un nuevo entorno llamado pruebas, deberá copiar el contenido de cualquiera de los archivos por omisión (preferiblemente el de desarrollo -dev-) dentro de la carpeta web del proyecto con el nombre app_pruebas.php y cambiar dentro de éste el valor de la variable SF_ENVIRONMENT a pruebas. Luego podrá ejecutar su aplicación en entorno de pruebas a través del siguiente URL: http://localhost/proy/web/app_pruebas.php

Archivos por lotes Si desea crear archivos PHP para ejecutar por línea de comandos, dentro del entorno de Symfony, deberá agregar las siguientes líneas al script (primeras líneas de los front controllers): <?php define('sf_root_dir', realpath(dirname( FILE ).'/..')); define('sf_app', 'myapp'); define('sf_environment', 'prod'); define('sf_debug', false); require_once(sf_root_dir.directory_separator.'apps'.directory_separator.sf_app.directory_separator.'co nfig'.directory_separator.'config.php'); // Comienzo del código PHP del desarrollador

Acciones Las acciones deben crearse dentro del archivo actions.class.php, ubicado en la carpeta actions del módulo. Cada acción es representada a través de un método executemiaccion de la clase mimoduloactions que hereda de la clase sfactions. Luego, las acciones también pueden ser creadas en archivos a parte -recomendado para casos donde se tienen módulos muy exensos con muchas acciones-. Para crear acciones en archivos a parte, se debe agregar un archivo llamado miaccionaction.class.php dentro de la carpeta actions del módulo, con la lógica en un método execute() dentro de una clase llamada miaccionaction, que extienda de la clase sfaction.

Obteniendo información class holamundoaction extends sfaction public function execute() // Obteniendo parámetros de la petición (request) $nombre = $this >getrequestparameter('nombre'); // Obteniendo información del controlador $nombremodulo = $this >getmodulename(); $nombreaccion = $this >getactionname(); // Obteniendo objetos principales del framework $peticion = $this >getrequest(); $sesion = $this >getuser(); $respuesta = $this >getresponse(); $controlador = $this >getcontroller(); $contexto = $this >getcontext(); // Pasando variables a la plantilla $this >setvar('nombre', 'juan'); $this >nombre = 'juan'; // Versión corta

Terminando Acciones Al final de cada método execute de una acción debe ser devuelto un valor que indica el flujo que deberá continuar la aplicación. A continuación se presentan los valores por omisión: sfview::success (en caso de que el método no tenga valor de retorno se asume éste). Retorna la salida a la plantilla miaccionsuccess.php. sfview::error. Retorna la salida a la plantilla miaccionerror.php. sfview::none. No retorna la salida a ninguna plantilla. Es utilizado generalmente en scripts que serán ejecutados por consola.

Terminando Acciones (personalizado) Al ejecutarse la siguiente acción: public function executeindex() return 'OtroResultado'; El flujo será dirigido a la plantilla indexotroresultado.php

Redirigiendo Acciones En ocasiones una acción debe redirigir el flujo a otra acción, otra plantilla o simplemente otro URL. Para ello, se pueden utilizar los siguientes métodos: $this >forward('modulo', 'pagina'). Realiza una redirección interna del flujo. $this >redirect('modulo/pagina') o $this >redirect('http://www.google.com'). Indica al navegador del Cliente a través de un mensaje HTTP que se dirija al URL indicado. $this >forward404(). Reenvía al Cliente a la página de recurso no encontrado (Error 404).

Repitiendo código en todas las acciones de un módulo Existen ocasiones en las que es necesario repetir fragmentos de código antes y después de la ejecución de todas las acciones de un módulo (Ej. apertura y cierre de conexiones a BD). Para estos casos se pueden utilizar los métodos: preexecute(). Ejecuta un conjunto de operaciones antes de cualquier método executexxx. postexecute(). Ejecuta un conjunto de operaciones después de cualquier método executexxx.

Accediendo al objeto de peticiones

Manejando sesiones Para manejar sesiones dentro de las acciones se pueden utilizar los siguientes métodos: $this >getuser() >setattribute('atributo', 'valor')). Permite almacenar información en la sesión del usuario. $this >getuser() >getattribute('atributo'). Permite obtener información de la sesión del usuario. $this >getuser() >getattributeholder() >remove('atributo'). Permite eliminar información de la sesión del usuario. $this >getuser() >getattributeholder() >clear(). Permite terminar el objeto de sesión del usuario. Para manejar sesiones dentro de las plantillas cuenta con el objeto principal: $sf_user (Ej. $sf_user >getattribute('atributo))

Atributos Flash Los Atributos Flash sirven para asignar valores temporales con ámbito de sesión. Esta información expira tras cada nueva petición. En los métodos execute se pueden utilizar de la siguiente forma: $this >setflash('atributo', 'valor'). Permite almacenar información en la sesión del usuario temporalmente. $this >getflash('atributo'). Permite obtener información de la sesión temporal del usuario. Para manejar sesiones temporales dentro de las plantillas cuenta con el objeto principal: $sf_flash. <?php if ($sf_flash >has('atributo')):?> <?php echo $sf_flash >get('atributo')?> <?php endif;?>

Seguridad de acciones En Symfony se puede utilizar seguridad declarativa para restringir el acceso a los recursos. Para ello simplemente debe agregar las directivas apropiadas dentro del archivo security.yml de la carpeta config de su módulo. Por ejemplo: index: is_secure: off # Todos los usuarios pueden acceder holamundo: is_secure: on # Sólo los usuarios autenticados pueden acceder helpers: is_secure: on credentials: admin # Sólo los usuarios autenticados con la credencial de admin pueden acceder nueva: is_secure: on credentials: [admin, [[invitado, desarrollador]]] # Sólo los usuarios autenticados con la credencial de admin Y (invitado O desarrollador) pueden acceder all: is_secure: off # Valor por omisión para el resto de acciones

Para garantizar el acceso Para garantizar el acceso a aquellas páginas que han sido marcadas como seguras (is_secure: on) debe autenticar la sesión del usuario. Por ejemplo: class mimoduloactions extends sfactions public function executeindex() if ($this >getrequestparameter('usuario') == 'juan') $this >getuser() >setauthenticated(true); public function executefinsesion() $this >getuser() >setauthenticated(false);

Trabajando con credenciales class mimoduloactions extends sfactions public function executehelpers() $user = $this >getuser(); // Agregando credenciales $user >addcredential('admin'); $user >addcredentials('invitado', 'desarrollador'); // Validando credenciales del usuario echo $user >hascredential('admin'); => true // Validando si el usuario tiene alguna de las credenciales echo $user >hascredential(array('admin', 'root')); => true // Validando si el usuario tiene todas las credenciales echo $user >hascredential(array('admin', 'invitado'), true); => true // Eliminando una credencial $user >removecredential('invitado'); echo $user >hascredential('invitado'); => false // Eliminando todas las credenciales $user >clearcredentials(); echo $user >hascredential('admin'); => false

Trabajando con credenciales en la plantillas <?php if ($sf_user >isauthenticated()):?> Estoy autenticado!!! <?php endif;?> <?php if ($sf_user >hascredential('admin')):?> Y soy admin!!! <?php endif;?>

Validaciones class mimoduloactions extends sfactions // Es ejecutado antes del método executemiaccion public function validatemiaccion() return ($this >getrequestparameter('id') > 0); /* Es ejecutado en caso de que el método validatemiaccion * devuelva false. Retorna el flujo a las plantillas (sin * pasar por el método executemiaccion */ public function handleerrormiaccion() $this >message = "Parámetro inválido"; return sfview::success; /* Es ejecutado en caso de que el método validatemiaccion * devuelva true */ public function executemiaccion() $this >message = "Los parámetros son correctos";