Как Cake PHP передает параметры от одного действия контроллера к другому представлению

У меня есть метод поиска в моем WorkersController.php как следующее:

public function search() {
    $conditions = array();
    if(!empty($this->request->data)){
        foreach($this->request->data['Search'] as $field => $search_condition ) {
            if(!empty($search_condition))
                $conditions["$field LIKE "] = "%$search_condition%";
        }
    }
    if(!empty($conditions)){
        $this->Worker->recursive = 0;
        $workers = $this->Worker->find('all',array('conditions' => $conditions));
    }
    $this->redirect(array('action' => 'index','search' ));
}

В методе, который я называю redirect(), то страница переходит к index.ctpгде я хочу получить $workers как это:

if($this->request->params['pass']==array('search')){
    if (empty($workers)){
        echo('No result found!');
    }else{
        foreach ($workers as $worker){ 
            //do something
        }
    }
}

Но я просто не могу получить $workersкак я могу передать это от search() в index.ctp?

Большое спасибо!

2 ответа

Решение

Вы можете попробовать и использовать сессию для этого случая.

// в controller1 $this->Session->write('работник', $ работники);

// в controller2 $workerData = $this->Session->read('worker');

Да, вы можете использовать в соответствии с приведенным ниже синтаксисом

$this->redirect(array('controller' => 'workers', 'action' => 'index', 'pass' => 'param', 'pass1' => 'param1'));

для более подробной информации вы можете использовать документ

Другие вопросы по тегам