Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/06/2011, 09:18
nerthalas
 
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Don´t repeat yourself (DRY). Dudas con la reutilización de controladores y

Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal nerthalas,

Podrías exponer algo de código para visualizar mejor el problema.

Saludos.
Desde luego. Te pongo un pequeño resumen:

En el index de mi web aparece una barra lateral de menús con distintas opciones (pongo cuatro pero en realidad hay bastantes más convenientemente formateadas con CSS y Javascript):

Código PHP:
<li><a href="<?php echo $this->url(array('controller'=>'opel''action'=>'index'))?>">Opel</a></li>

<li><a href="<?php echo $this->url(array('controller'=>'seat''action'=>'index'))?>">Seat</a></li>

<li><a href="<?php echo $this->url(array('controller'=>'ford''action'=>'index'))?>">Ford</a></li>

<li><a href="<?php echo $this->url(array('controller'=>'bmw''action'=>'index'))?>">BMW</a></li>
La forma "natural" de gestionar cada enlace sería a través de un controlador X con varias acciones. Tales acciones son comunes para cada controlador, es decir, los cuatro tienen "index", "information" y "características" y "galería" pero se han de mostrar personalizadas para cada controlador (las características de Opel son distintas a las de Seat, por poner un ejemplo)

Código PHP:
class OpelController extends Zend_Controller_Action
{    
    
    public function 
init()
    {
        
    }

    public function 
indexAction()
    {
        
    }
    
    public function 
informacionAction()
    {
        
    }

    public function 
caracteristicasAction()
    {
        
    }

    public function 
galeriaAction()
    {
        
    }


A su vez, cada controlador X tendría una vista para el Index así como para el resto de sus acciones.


Dicho todo lo anterior y siempre y cuando sea posible, estoy buscando la manera de evitar repetir el anterior esquema para, pongamos 50 marcas de coches.

Había pensado en la posibilidad de crear un único controlador/acciones que recibiera un parámetro (la marca del coche) y se personalizase para ese parámetro.

Por ejemplo, que MarcaController reciba un parámetro "Opel" y sus acciones index, información, características y galería muestren en la vista la salida específica que devuelve la BBDD para esa marca.

Asímisimo, también busco la forma de tener un template común para la vista de esas acciones y no tener que repetir código en cada controlador.

Espero haberme explicado bien ahora, con estas cosas uno no siempre acierta a la hora de exponer sus problemas

Muchas gracias por anticipado.