Cómo Pasar Parámetros A Módulo?

Hola, estoy implementando módulos en mi aplicación y me quedan algunas dudas. Tengo la siguiente estructura:




protected/

  modules/

    locales/

      controllers/

      models/

      modules/

        productos/

          controllers/

          models/

          views/

      views/



Para poder acceder al módulo productos, yo entro a la URL:


http://mysitio.com/locales/productos

Ahora, supongamos que yo quisiera ver los productos correspondientes al local con ID 1, por lo tanto, necesito pasarle ese ID de local al módulo productos.

¿Cómo podría pasarle este parametro? ¿Por GET? ¿De qué forma?

Si pongo


http://mysitio.com/locales/productos?id_local=1

funciona, pero, ¿es correcto así? ¿Cómo se puede hacer amigable ese parámetro?

Cualquier ayuda se agradece :)

En mi opinión te estás liando un poco de más.

Cuando tu carga un módulo, tienes que ir a una página, no te carga el módulo así como así.

Imaginemos que tenemos un módulo llamado "locales" y un modelo "Productos", con su controlador y vistas.

Pues en el controlador tendrás algo así (por ejemplo para "actionView"):




public function actionView()

{

...

     $this->render('view', array('localId' => 1))

}



Está claro que tendrás que cambiar el 1 por una variable dinámica, que por supuesto puedes pasar a tu view:




public function actionView($localId)

{

...

     $this->render('view', array('localId' => $localId))

}



Y listo, cuando llames a la vista "View" de productos dentro del módulo "locales" le pasas el identificador del local y ya.

Un saludo.

Gracias por la respuesta.

¿Y cómo le hago llegar $localId? ¿Por GET?

Luego, si quiero ver el detalle del producto 1, correspondiente al local 1, ¿cómo le entrego al controlador de productos el ID del producto y el ID del local ¿Por GET igualmente?

Esa es la duda, le doy mil vueltas pero no me cuadra la estructura de lo que quiero hacer.

Saludos y gracias por la ayuda ;)

En el controlador de productos debes tener dos actions, una para ver los productos del local(admin) y otra para ver el detalle del producto(view)


public function actionAdmin($localId)

{

...

     $this->render('admin', array('localId' => $localId))

}

public function actionView($productoId)

{

...

     $this->render('view', array('productoId' => $productoId))

}



y para crear la url para ver los productos del local es


Yii::app()->createUrl('locales/productos/admin',array('localId'=>$localId));

y para el detalle del producto es


Yii::app()->createUrl('locales/productos/view',array('productId'=>$productoId));

En primer lugar no sabemos lo que tienes en tus views, por lo que sería bueno que nos lo mostrases.

Pero supongo que tendrás un link o botón (dentro o fuera de un CGridVew, es lo mismo) que te rediriga a la acción que desees. Pues ese link o botón tendrá una url destino, y ahí es donde tienes que pasarle el identificador del local.

Para el detalle de productos es lo mismo, pero con otra acción, tal y como te escribió a1827.

Un saludo.