CakePHP: requestAction
Para ello creamos una función dentro de users_controller.php que sea la encargada de devolver los datos de un usuario seleccionado según $id:
function datos($id) { // Si no se accede por un requestAction no funciona if(empty($this->params['requested'])) { exit; } // Devuelve los datos del usuario seleccionado según $id return $this->User->find('first',array('conditions' => array('User.id' => $id))); }Ahora solo nos queda llamar a esa función desde cars_controller y procesar la información para que quede accesible a nivel de vista, lo haremos con este código:
function listado($id) { ... // Llamamos a la función datos() de users $datos = $this->requestAction('/users/datos/'.$this->Session->read('sid')); // Declaramos la variable que usaremos a nivel de vista $this->set('dataUser', $datos); }En este caso el parámetro $id lo sacamos de una variable de sesión. El uso básico de requestAction es sencillo y considero que con este ejemplo queda bien explicado.
Comentarios
En caso de querer utilizar una lógica perteneciente a un modelo relacionado con un modelo asociado al controlador en que está lo mejor es relacionar dichos modelos con la relación correspondiente y luego, desde cars por ejemplo, hacer algo del tipo:
$this->Car->User->find('first',array('conditions' => array('User.id' => $this->Session->read('sid'))));
Con eso obtienes el mismo resultado y la performance es mucho mejor.
Tambien podrías hacer lo mismo si User y Car no estuvieran relacionados haciendo que CarsController use el modelo User.
Saludos,