CakePHP 2.0 контроллер рендеринга не работает все время - PullRequest
0 голосов
/ 07 марта 2012

У меня есть контроллер поиска, который будет искать значения и отображать конкретные представления в соответствии с типом отчета, который должен отображаться. Происходит странная вещь. Когда я запускаю $ this-> render, представление отчета не отображается. Строка перенаправления «catch all» всегда отображается ... Код выглядит следующим образом:

публичная функция admin_printReport () {

if (isset($this->request->data['Reports'])) {

    $nons = $this->request->data['Reports'];

    $res = array();

    // lets lookup the noncons.....       
    foreach ($nons as $dat=>$vdat) {

        // skip the ones that are not checked 
        if ($vdat == 0) {
            continue;
        }

        // this is the temporary array that holds all of the selected report numbers          >             $res[] = $dat;

    }

    $this->loadModel('Noncon');       
    $this->Noncon->recursion = 0; 
    $results = $this->Noncon->find('all', array('conditions'=>array('Noncon.id'=>$res)));
    $this->set('results', $results);  

    // lets do the selection now...
    if (isset($this->request->data['PS'])) {  
        // Print summary
        $this->render('summary', 'print');
    } elseif (isset($this->request->data['PD'])) { 
        // Print detail 
        $this->render('detail', 'print');
    } elseif (isset($this->request->data['PDH'])) { 
        // Print detail with history 
        $this->render('detailhistory', 'print');
    }
} 

// catch all if the render does not work....
$this->redirect(array('controller'=>'noncons', 'action'=>'search','admin'=>true)); 

}

Есть идеи?

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Я только что понял ...

для каждого $ this-> render, добавьте return.Например:

return $ this-> render ('summary', 'print');

0 голосов
/ 17 октября 2012

Я только что добавил похожую проблему.

В контроллере с отправкой ajax он не отправлял рендер.

$this->render($viewName, 'ajax');

Использование return не помогло.

Проблема заключалась в том, что я добавил

$this->render('add');

в конце контроллера, хотя в этом не было необходимости, поскольку имя контроллера add и autoRenderпо умолчанию (true, чтобы автоматически отображать представление с тем же именем контроллера).

Надеюсь, это поможет кому-то еще.

...