我目前在我的故障单/视图中有索引,查看,添加和编辑,并且我计划添加另一个名为current的视图。我想在该视图中仅显示“已解决”的票证,但不知道如何操作。在过去的几天里,我一直想弄清楚这一点,没有运气。我应该在哪里放置“查找”代码以及我应该在我的故障单/当前视图代码中包含哪些内容?这是我到目前为止所尝试的内容:
/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"';
}
?>
此代码显示与/views/tickets/index.ctp相同(包含表中的所有记录)。
谢谢, 莱曼
答案 0 :(得分:0)
你快到了。 Cake中的$this->set('foo')
是将变量传递给view
的一种方法。
下面的代码所做的是设置一个名为current
的变量find
方法的返回值,该方法具有自定义条件,可以从视图中访问。 (在这种情况下,它是一个数组;但你可以设置任何东西)
除非您打算在此视图中使用分页,否则此处不需要paginate()
。
所以这样的事情应该可以解决问题($curr
是一个糟糕的变量名称,但我没有创造力。(resolved_tickets
会更有意义(为什么是最新的?)
//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
?>