Pasar Variable de una vista a otra

675 views
Skip to first unread message

Liceth Yecenia Vargas Rodriguez

unread,
Aug 9, 2011, 11:39:09 AM8/9/11
to CakePHP en Español
Buenos Dias:

lo que sucede, es que en una vista que lleva por nombre principal.ctp,
tengo una caja de texto la cual contiene el numero que recogo desde la
url, ahora lo que quiero hacer es pasar esa misma variable a otra
vista que se carga en principla.ctp, por medio jquery, pero cuando
realizo la sentencia, en la otra vista, dentro del controlador
$this->Patient->id = $this->params['pass'];
$this->set('patient', $this->Event->read(null, 'id'));
$this->set('id', $idnumber);
$this->set('idnumber', $idnumber);

para recoger los parametros de la url de principal.ctp, lo que Recoge
es la url de la pagina que cargo en el <div> con jquery, como hago
para que me recoga las variables que tengo en la url principal y no
las de la pagina secundaria.

Gracias

Chris

unread,
Aug 9, 2011, 12:15:06 PM8/9/11
to CakePHP en Español
Me cuesta un poco entender tu estructura.
Pero creo que estas usando ajax, y creo que lo que quieres es
basicamente enviar un parametro a la url de destino el cual se
encuentra como parametro en la url de origen?
Si es asi, entonces puedes enviar la variable que mencionas a la url
remota como un parámetro ajax, esto esta relacionado con Jquery asi
que lee esto: http://api.jquery.com/jQuery.ajax/

Además:

¿Estás segura que esto esta bien?
$this->Patient->id = $this->params['pass'];
$this->Event->read(null, 'id')

Depura $this->params['pass'] y mira su estructura, es muy posible que
no sea la que piensas.



On 9 ago, 17:39, Liceth Yecenia Vargas Rodriguez <licet...@gmail.com>
wrote:

Liceth Yecenia Vargas Rodriguez

unread,
Aug 9, 2011, 12:20:50 PM8/9/11
to CakePHP en Español
Hola:

ese trozo de codigo lo probe y si me extrae el ultimo dato de la url y
la paso a la vista con set, y si afirmativamente la pasa, ahora el
inconveniente es pasar esa variable a la otra vista.

voy a revisar lo que me enviaste..

Gracias

Chris

unread,
Aug 9, 2011, 12:38:46 PM8/9/11
to CakePHP en Español
$this->params['pass'];
Ten mucho cuidado, su estructura es un array escalar, es decir algo
asi:
array( 0 => parametro_uno, 1 => parametro_dos, .. )

En tu caso es probable que funcione dado que tienes posiblemente un
unico parametro en tu URL, pero nunca jamás deberias de hacer esto:
$this->Patient->id = $this->params['pass'];

Ejemplo:
Imagina una URL asi: /posts/edit/5/category_2

Estarias haciendo algo asi:
$this->Post->id = array(0 => 5, 1 => category_2); // lo cual es
completamente erroneo



$this->Event->read(null, 'id')
Si no me equivoco el segundo parámetro debe ser el Identificador del
registro a leer, que en tu caso es String 'id', si estas usando
identificadores tipo string en ese caso estaría correcto. Si estas
usando ID's de tipo strings, entonces es altamente recomendable que no
lo hagas y utilices enteros ascendentes en su lugar.
Te recomiendo usar el metodo ->findBy{Field}() en lugar de ->read().
Es decir, $this->Event->findById($tu_id);




On 9 ago, 18:20, Liceth Yecenia Vargas Rodriguez <licet...@gmail.com>

Liceth Yecenia Vargas Rodriguez

unread,
Aug 9, 2011, 1:01:15 PM8/9/11
to CakePHP en Español
Hola
mira este es la parte del jquery que utilizo para enviar la pagina
secundaria a la principal
$.ajax({
type: "GET",
url: "/erp-clinicaalvear/events/index2/"+$(this).val(),

beforeSend: function() {
$('#calendario').html('<div class="rating-flash"
id="cargando_div">Cargando <img src="/erp-clinicaalvear/webroot/img/
ajax-loader_mini.gif"></div>')
},

success: function(datos){

$('#calendario').html(datos);
}
});
y cuando el $this->params['pass'];, es donde recoge el valor del $
(this).val(), y no el de la url principal.

Gracias por solucionar mi duda

Chris

unread,
Aug 9, 2011, 1:19:06 PM8/9/11
to CakePHP en Español
Vale entonces las url que se estan generando son del tipo

"/erp-clinicaalvear/events/index2/ID", controlador events y accion
index2 con parametro ID

Luego en tu controlador Events:
class Events ..
function index2($ID){
$this->set('TU_ID', $ID);
$this->autoRender = true; // esto es por si acaso
}...


En tu vista index2.ctp:
<!-- cosas HTML -->
<?php echo $TU_ID; ?>
<!-- eof -->


No se si estoy en lo correcto...Pero creo que no comprendes del todo
bien el como se despacha una url en cake dado que usas -
>params['pass'] cuando es completamente innecesario y además tu
pregunta por lo que veo es producto de lo mismo. Aun asi lo explico
por si acaso y nos ahorramos un mensaje:

/mi_controlador/accion/param1/param2 -> el dispatcher de cake hace
esto:

Busca la clase "MiControlador"
y ejecuta el metodo "accion" de esa clase, luego le pasa los
parametros param1 y param2, es decir, el dispatcher hace basicamente
esto:

MiControlador::accion(param1, param2); // esos mismos aprametros estan
en ->params['pass']

Ves por qué es innecesario usar "->params['pass']", pues los
parametros ya estan como parametros del metodo y los puedes obtener
perfectamente desde la logica de dicho metodo?
Reply all
Reply to author
Forward
0 new messages