开发者

How to add another view with customized "find" in CakePHP?

开发者 https://www.devze.com 2023-04-05 23:01 出处:网络
I currently have index, view, add and edit from my tickets/views and am planning to add another view called current. I want to display only the \"Resolved\" tickets on that view but have no idea how t

I currently have index, view, add and edit from my tickets/views and am planning to add another view called current. I want to display only the "Resolved" tickets on that view but have no idea how to do it. I've been trying to figure this out for the past couple of days with no luck. Where should I put the "find" code and what should I include on my tickets/current view code? Here's what I have tried so far:

/controllers/tickets_controller
function current() {
$current = $this->set('tickets', $this->Ticket->find('all', array(
    'conditions' => array('Ticket.status' => 'Resolved'),
    'order' => array('Ticket.created' => 'desc')
)));
$this->set('tickets', $this->paginate());
}

/views/tickets/current.ctp
<?php
$i = 0;
foreach ($tickets as $ticket):
    $class = null;
    if ($i++ % 2 == 0) {
        $class = ' class="altrow"';
    }
?开发者_开发知识库>

This code displays the same as /views/tickets/index.ctp (with all the records from the table).

Thanks, Lyman


You were almost there. $this->set('foo') in Cake is one way you can pass variables to the view.

What the code below does is set a variable called current the return value of the find method which has a custom condition, which can be accessed from the view. (It's an array in this case; but you can set anything)

You don't need the paginate() here unless you plan to use pagination in this view.

So something like this should do the trick ($curr is a bad variable name but I wasn't feeling inventive. (resolved_tickets would make more sense (why current?))

//controllers/tickets_controller
function current() {
    $this->set('current', $this->Ticket->find('all', 
                 array('conditions' => array('Ticket.status' => 'Resolved'),
                       'order' => array('Ticket.created' => 'desc')
                 )));
}

/views/tickets/current.ctp
<?php
$i = 0;
// adjust the variable in the foreach
foreach ($current as $curr):
    $class = null;
    if ($i++ % 2 == 0) {
        $class = ' class="altrow"';
    }
    echo $curr['Ticket']['id']; // example
?>
0

精彩评论

暂无评论...
验证码 换一张
取 消