ZF1 Pasar variable entre módulos

136 views
Skip to first unread message

adrian gattorno gil

unread,
Feb 18, 2013, 8:15:22 AM2/18/13
to zend-framew...@googlegroups.com
Hola a toda la comunidad. Estoy haciendo en ZF 1.12 una simple vista en un módulo que su funcion es reproducir ciertos videos. La cuestión es que lo estoy haciendo de forma tal que desde cualquier otro módulo se pueda mediante un enlace normal hacer que se habra la vista y que reciba desde ese módulo la url del video que quiero que se repoduzca. Entonces, quisiera hacerles dos consultas:
la primera:
    El tema lo he solucionado a grandes rasgos de esta manera:
    Tengo un layout para todos los módulos con el siguiente enlace:
      <a href="<?php echo $this->url(array(
                                    'module' =>'Herramientas',
                                    'controller' => 'video-tutoriales',
                                    'action' => 'index',
                                    ));?>" target="_blank">Ver video</a>
   
    En el controlador de la vista del módulo desde donde se muestra el enlace hago esto para pasarle la variable al controlador video-tutoriales del módulo Herramientas:
    public function indexAction()
    {
      session_start();
      $_SESSION["urlVideo"] = "/Videos/video1.flv";
    }
    En el controlador de videos tutoriales tengo esto:
    class Herramientas_VideoTutorialesController extends Zend_Controller_Action
    {
        public function init()
        {
            /* Initialize action controller here */
        }

        public function indexAction()
        {
          //cargando el layout de la intrefaz de los videos tutoriales
          $this->_helper->layout->setLayout('videos-tutoriales-layout');
          //obteniendo la url del video
          //pas'andole una variable a la vista con la url del video
          session_start();
          $this->view->urlVideo = $_SESSION["urlVideo"];
        }
    }
    Y en la vista ya solamente necesito esto:
    <script type="text/javascript">
        jwplayer("videoPlayer").setup({
            'flashplayer': '/js/jwplayer/player.swf',
            'file': '<?php echo $this->urlVideo; ?>',
            'controlbar': 'over',
            'fullscreen': 'true',
            'stretching': 'fill',
            'height': '400',
            'width': '600',
            'skin': '/js/jwplayer/slim/slim.zip'
        });
    </script>

Mi pregunta es hay alguna forma de hacer esto de pasar la ruta del video de una forma mas elegante?

La otra consulta sobre esto es que en una vista tengo un listado de videos a reproducir por lo que el mecanismo anterior no lo puedo usar y necesitaria alguna vía de pasar la url que corresponda con cada video a la vista o al controlador del visor de los videos cuando se haga clic en el enlace del video. Hay alguna forma de hacerlo?

Muchas gracias de antemano a toda esta gran comunidad.
Si no fuí lo suficientemente claro con algún aspecto digánmelo...

CarloS Sing Ramos

unread,
Feb 18, 2013, 8:23:19 AM2/18/13
to zend-framew...@googlegroups.com
uhmmm hay algo llamado Zend Registry o algo asi no recuerdo bien el nombre, pero sirve para definir valores y luego llamarlos, otra cosa quepuedes hacer es guardarlos en un archivo .ini y leerlos.
Otra es Zend Session, pruebas y comentas :p




--
Has recibido este mensaje porque estás suscrito al grupo "Zend Framework-hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a zend-framework-hi...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a zend-framew...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/zend-framework-hispano?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Salu2
Linux Register User  #525697
--==[[Carlos Sing]]==--

Sergio Gabriel Rodriguez

unread,
Feb 18, 2013, 9:16:51 AM2/18/13
to zend-framew...@googlegroups.com
Hola Adrián, te consulto, vos tenés una tabla con los nombres de los videos?


2013/2/18 adrian gattorno gil <agat...@gmail.com>

--

Sergio Gabriel Rodriguez

unread,
Feb 18, 2013, 9:28:33 AM2/18/13
to zend-framew...@googlegroups.com
te pregunto porque podrias hacer un enlace común en tu vista, para cada ítem del listado de videos, supongamos que sacas los videos de una tabla, podes listarla así:

<a href="<?php echo $this->basepath; ?>/herramientas/video-tutoriales/ver-video/id/<?php echo $video->id ?>">ver video</a>

y dentro del Controller 


class Herramientas_VideoTutorialesController extends Zend_Controller_Action
    {
        public function init()
        {
            /* Initialize action controller here */
        }

        public function verVideoAction()
        {
   
          //A través de tu model de videos buscás el video con ese id y lo pasas
         //como objeto a la vista
          $video = $this->_videoModel->getById($this->_request->getParam('id'));
          $this->view->video = $video
        }


y en la vista del reproductor:

<script type="text/javascript"> 
        jwplayer("videoPlayer").setup(
            'flashplayer': '/js/jwplayer/player.swf', 
            'file': '<?php echo $this->video->url; ?>',

            'controlbar': 'over',
            'fullscreen': 'true',
            'stretching': 'fill',
            'height': '400', 
            'width': '600',
            'skin': '/js/jwplayer/slim/slim.zip'
        }); 
    </script> 


Obviè las validaciones del caso, pero a groso modo podría servirte.

Saludos


2013/2/18 CarloS Sing Ramos <carlo...@gmail.com>

adrian gattorno gil

unread,
Feb 18, 2013, 11:42:16 AM2/18/13
to zend-framew...@googlegroups.com
hola todos y gracias por sus respuestas.
Teniendo en cuenta sus ideas creo que lo que debería hacer es al final no hacer tan genérica la aplicacion y hacer dos vistas en ves de una sola. Una vista para el caso normal de ver un video en donde le paso la variable usando las sessiones. En este caso carlos traté de usar Zend Session para mantenerme en el ámbito de ZF y no usar las cosas de php directemente pero no me funcionó y lo hice con las sessiones de php directamente. Lo probaré de nuevo y ya te cuento.
Y la otra vista para el caso del listado dónde la idea de sergio creo que es muy buena. tendría una tabla con los datos de los videos como el nombre y la url y en funcion del id busco la ruta y lo cargo...
Muchas gracias a todos. Voy a probar y luego les comento los resultados... chao...

Sergio Gabriel Rodriguez

unread,
Feb 18, 2013, 1:27:02 PM2/18/13
to zend-framew...@googlegroups.com

Adrian, no estoy entendiendo cual es la.diferencia entre las dos situaciones que nombras, para que usarias sesion?

adrian gattorno gil

unread,
Feb 19, 2013, 7:19:46 AM2/19/13
to zend-framew...@googlegroups.com
si, es que son dos casos. Cuando en la página donde está el enlace solo hay un enlace, en ese caso con pasar una variable con la ruta me basta pero para eso solo encontré como solucion o las Zend Session o las de php, porque no encontré cómo crear una variable en el action de la vista que muestra el enlace y pasársela al controlador del visor de videos...
y el otro caso es cuando tengo como un listado de videos a mostrar. En cuyo caso hasta ahora la mejor opcion me parece la de la tabla en la bd...
saludos...

Sergio Gabriel Rodriguez

unread,
Feb 19, 2013, 7:54:23 AM2/19/13
to zend-framew...@googlegroups.com
Adriàn y en las páginas donde sólo tenes un enlace, como obtenés el nombre del video, o sea de donde lo sacas para asignar al Session? 

podrias agregar una variable a tu layout

      <a href="<?php echo $this->url(array(
                                    'module' =>'Herramientas',
                                    'controller' => 'video-tutoriales',
                                    'action' => 'index', 
                                    'video' => $this->video,

                                    ));?>" target="_blank">Ver video</a>

y en cada controller que use esta vista

   public function indexAction()
    {
        $this->view->video =  "/Videos/video1.flv";
    }


De todas maneras esto de setear "a mano" el nombre del video en cada controller me parece que no es óptimo, deberías hacerlo más genérico, usar la misma base que para el listado, donde puedas guardar que videos corresponden a cada sección podria ser una solución, y en cada Controller de sección poner:

 public function indexAction()
    {
        $this->view->video =  $this->_videoModel->getBySeccion('Seccion1');
    }

Saludos.




2013/2/19 adrian gattorno gil <agat...@gmail.com>
Reply all
Reply to author
Forward
0 new messages