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.

¿Fue útil?

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 su AppController 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".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top