Cześć wszystkim Próbuję mieć podział na strony w tabeli w jednym z moich widoków, moje polecenie find zwraca poprawny zestaw wyników, jednak nie jestem pewien, jak mogę sprawić, by moja tabela była w stanie sortować znalezione informacje.

Tutaj jest kontroler, kiedy próbuję stronicować, znajduję wszystko, co otrzymuję, to błędy

public function index_admin(){
    //displays all disputes related to account.id
    //in a dashboard for an administrator user

    $this->set('title_for_layout', 'Dispute');
    $this->set('stylesheet_used', 'homestyle');
    $this->set('image_used', 'eBOXLogoHome.png');
    $this->layout='home_layout';

    //gets the User.account_id
    $id = $this->Auth->User('account_id');
    $conditions=array("OR"=> array(
        'Invoice.sender_id' => $id,
        'Invoice.receiver_id' => $id));

    $receiver=$this->Dispute->find('all',array(
    'conditions'=>$conditions));

    $this->set('receiver',$receiver);
    $this->paginate('Dispute'); 
    $this->set('id',$id);


}

Oto kod do widoku

            <tr>
                <th><?php echo $this->Paginator->sort('id', 'Invoice ID'); ?></th>
                <th><?php echo $this->Paginator->sort('dispute_date', 'Dispute Created'); ?></th>
                <th><?php echo $this->Paginator->sort('status', 'Status'); ?></th>
                <th>Actions</th>
            </tr>

    <?php foreach($receiver as $receivers):?>

    <tr>
        </tr><tr>
        <td><?php echo $receivers['Invoice']['id'] ;?></td>
        <td><?php echo $receivers['Dispute']['dispute_date'] ;?></td>

    <?php

    if($receivers['Dispute']['active']==1)
    {
        $status = 'Active';
        $bgcol = '#B9FAEA';
    }
    else 
    {
        $status = 'Resolved';
        $bgcol = '#FAB9B9';
    } 
    ?><td align='center' bgcolor='<?php echo $bgcol ?>'><?php echo $status ?></td>
    <td><?php echo $this->Form->Html->link('View',
                                array('controller' => 'Messages','action'=>'viewMessage_admin',$receivers['Dispute']['id'])); ?>
                <?php echo $this->Form->Html->link('Resolve',
                                array('controller' => 'Disputes','action'=>'resolve',$receivers['Dispute']['id'])); ?></td>
    </tr>


<?php endforeach; ?>
0
user1393064 25 wrzesień 2012, 04:40

2 odpowiedzi

Najlepsza odpowiedź

Powinieneś zadzwonić paginate zamiast find, a nie po nim:

$id = $this->Auth->User('account_id');
$conditions=array("OR"=> array(
    'Invoice.sender_id' => $id,
    'Invoice.receiver_id' => $id));

$receiver=$this->paginate('Dispute', $conditions);
$this->set('receiver',$receiver);
$this->set('id',$id);
1
bfavaretto 25 wrzesień 2012, 04:55

Odniesienie CakePHP do paginacji po stronie kontrolera, tak samo jak po stronie widoku, dzięki czemu uzyskasz głęboką wiedzę na temat paginatora cakePHP

http://book.cakephp.org/2.0/en/core -biblioteki/komponenty/paginacja.html http://book.cakephp.org/1.3/view/1233/Pagination-in-Views

Przykład http://bakery.cakephp.org /articles/rtconner/2007/06/13/basic-pagination-overview-1-2

0
Jhanvi 25 wrzesień 2012, 10:57