AJAX PAGING/Clasificación en CakePHP 2.0
-
27-10-2019 - |
Pregunta
Estoy usando CakePhp 2.0 e intento crear una paginación de Ajax que no puedo en la documentación, leí que pasar esto
$this->Paginator->options(
array('update'=>'#box',
'evalScripts' => true,
'before' => $this->Js->get('#loaderIDast')->effect('fadeIn', array('buffer' => false)),
'complete' => $this->Js->get('#loaderIDast')->effect('fadeOut', array('buffer' => false)),
))
en la vista hará que Paginaton Helper cree un enlace Ajax que en mi caso no lo hace. Estoy usando el motor jQuery aquí.
Al cavar los archivos de la biblioteca, me encontré que Paginator está utilizando la función de evento que está haciendo esto
jQuery("#link-969794460").bind("click", function (event) {jQuery.ajax({beforeSend:function (XMLHttpRequest) {jQuery("#loaderIDast").fadeIn();}, complete:function (XMLHttpRequest, textStatus) {jQuery("#loaderIDast").fadeOut();}, dataType:"html", evalScripts:true, success:function (data, textStatus) {jQuery("#box").html(data);}, url:"\/admin\/user\/manage_user\/sort:User.name\/direction:asc"}); return false;});
Y esto de alguna manera no se devuelve en la llamada de eventos. No sé por qué alguien tiene una idea de lo que me estoy perdiendo.
Saludos Himanshu Sharma.
Solución
En realidad, hay ejemplo en el libro aquí. Busque la sección de paginación de Ajax. Asegúrese de seguir todas las instrucciones y funcionará.
Necesitas:
- El componente de SolicHandler se cargará en su controlador.
- El ayudante JS se cargará en su controlador.
- Debe incluir jQuery en su vista/diseño.
- Y necesitas escribir el búfer JS (
$this->Js->writeBuffer()
) en su vista/diseño. Sugeriría poner esto en su vista a menos que cargue el ayudante JS en suAppController
porque de otra manera$this->Js
no se definirá.
El ejemplo en el libro usa jQuery y funciona.
Otros consejos
No olvide agregar el $ this-> paginator-> números () después de que le diga a Pagination Helper que desea un enlace JavaScript en lugar de HTML simple
<?php
$this->Paginator->options(array(
'update' => '#content',
'evalScripts' => true,
'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
));
?>
<?php echo $this->Paginator->numbers();?>
Tuve el mismo problema, pero en mi caso la ID de la etiqueta DIV en el archivo de diseño fue incorrecta. Debería ser "contenido".