В моем контроллере у меня есть функция before (), которая вызывает parent::before()
, а затем выполняет дополнительную обработку после возвращения родителя.основываясь на определенном условии, я хочу «сохранить» исходный запрос и передать выполнение определенному действию.Вот моя функция before ().
public function before() {
parent::before();
$this->uri = Request::Instance()->uri;
$match = ORM::factory('survey_tester')
->where('eid','=',$this->template->user->samaccountname)
->find();
if (!$match->loaded()) {
self::action_tester("add",$this->template->user);
}
}
И вызываемое действие ..
public function action_tester($op=null,$user=null) {
$testers = ORM::factory('survey_tester')->find_all();
$tester = array();
$this->template->title = 'Some new title';
$this->template->styles = array('assets/css/survey/survey.css' => 'screen');
$this->template->scripts = array('assets/js/survey/tester.js');
$tester['title'] = $this->template->title;
$tester['user'] = $this->template->user;
switch ($op) {
case "add":
$tester = ORM::factory('survey_tester');
$tester->name = $user->displayname;
$tester->email = $user->mail;
$tester->division = $user->division;
$tester->eid = $user->samaccountname;
if ($tester->save()) {
$this->template->content = new View('pages/survey/tester_add', $admin);
} else {
$this->template->content = new View('pages/survey/tester_error', $admin);
}
break;
default:
break;
}
}
Кажется, все работает нормально.Это сделано для того, чтобы запросить у пользователя определенную информацию, которая не предоставляется $ user (заполняется LDAP), если это первый раз, когда он по какой-либо причине запускает контроллер.
Проблема в том, чтовиды не рендерится.Вместо этого управление переходит обратно к тому действию, которое было запрошено изначально.Этот контроллер называется опросом.Если я перейду к http://my.site.com/survey и войду в систему с новой информацией о пользователе, запись будет записана, и я получу представления action_index вместо моих представлений action_tester.
Я не могу понять, что я делаю здесь неправильно.Любые идеи будут оценены.Спасибо.
РЕДАКТИРОВАТЬ : мне удалось получить эту работу (вроде как) с помощью $this->request->action = 'tester';
, но я не уверен, как добавить / установить новые параметры для запроса еще.