techie_28
techie_28

Reputation: 2133

Ajax Paging/sorting in cakephp 2.0

I am using cakephp 2.0 and trying to create ajax paging which i cant in the documentation i read that passing this

$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)),
                          ))

in the view will make paginaton helper to create ajax link which in my case doesnt. I am using jQuery engine here.

On digging the library files i came across that paginator is using the event function which is making this

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;});

and this is somehow not returned in event call.I dont know why any one have an idea what i am missing?

Regards Himanshu Sharma.

Upvotes: 0

Views: 9561

Answers (3)

Ajay Anturkar
Ajay Anturkar

Reputation: 11

I had same problem but in my case the id of the div tag in layout file was wrong. It should be "content".

Upvotes: 1

Bob
Bob

Reputation: 1497

Please don't forget to add the $this->Paginator->numbers() after you tell pagination helper that you want a javascript link instead of plain html

    <?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();?>

Upvotes: 1

Francois Deschenes
Francois Deschenes

Reputation: 24969

Actually, there are example in the book here. Look for the Ajax Pagination section. Make sure to follow all of the directions and it'll work.

You need:

  • The RequestHandler component to be loaded in your controller.
  • The Js Helper to be loaded in your controller.
  • You need to include jQuery in your view/layout.
  • And you need to write the Js buffer ($this->Js->writeBuffer()) in your view/layout. It'd suggest putting this in your view unless you load the Js helper in your AppController because otherwise $this->Js won't be defined.

The example in the book uses jQuery and works.

Upvotes: 4

Related Questions