Как добавить другой вид с настроенным «найти» в CakePHP? - PullRequest
1 голос
/ 16 сентября 2011

В настоящее время у меня есть индекс, просмотр, добавление и редактирование из моих билетов / просмотров, и я планирую добавить другой вид, называемый текущим. Я хочу отображать только «разрешенные» тикеты в этом представлении, но не знаю, как это сделать. Я пытался понять это последние пару дней без удачи. Где я должен разместить код «найти» и что я должен включить в свои билеты / код текущего просмотра? Вот что я попробовал до сих пор:

/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 (со всеми записями из таблицы).

Спасибо, Лиман

1 Ответ

0 голосов
/ 16 сентября 2011

Вы были почти там. $this->set('foo') в Cake - это один из способов передачи переменных в 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
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...