#php #codeigniter #redirect
#php #codeigniter #перенаправление
Вопрос:
что я хочу сделать, так это перенаправить пользователя на другой контроллер, если запрос в моей модели возвращает пустой.
У меня есть контроллер, подобный этому, передающий параметр URL в $ id, чтобы получить конкретного пользователя
public function get_user($id)
{
$data['user'] = $this->user_model->get_user_detail($id);
$this->load->view('customer_detail',$data);
}
И моя модель :
public function get_user_detail($id)
{
$query = $this->db->where('user_id', $id)->get('user');
return $query->row();
}
затем я передал результат своему представлению следующим образом:
<?php echo $user->name;?>
Это сработало просто отлично. URL от моего контроллера будет чем-то вроде mysite / user / get_user /7, а ‘7’ — это идентификатор. Но если я введу несуществующий идентификатор непосредственно в строке URL, например mysite /user / get_user / 99, это выдаст ошибку «Попытка получить свойство ‘name’ не-объекта», потому что в базе данных нет пользователя с идентификатором 99. Как перенаправить пользователя на другой контроллер, если из запроса не найдены данные?
Спасибо
Комментарии:
1. зачем другой контроллер? Я бы либо загрузил представление customer_detail, либо загрузил представление 404, если данные [‘user’] пусты
2. @vickel Ах, да, конечно. Я попытался проверить результат в модели, а затем перенаправить. Это не работает. Я должен выполнить проверку данных [‘user’] на контроллере и просто загрузить другое представление, если оно пустое. Это сработало. Спасибо.
Ответ №1:
Простой способ перенаправления.
$q = $this->db->query()->row();
If($q==""){
redirect('url/page');
}
Ответ №2:
public function get_user_detail($id)
{
$query = $this->db->where('user_id', $id)->get('user');
$query != "" ? redirect('actual-controller ($query)') : redirect('other-controller');
}
controller($query){ return $query->row(); //your view code for view here }
Ответ №3:
Спасибо @Vickel за указание. Я должен выполнить проверку на контроллере, которого нет в модели, и мне не нужно перенаправление. Я выполнял проверку модели и перенаправление.
public function get_user($id)
{
$data['user'] = $this->user_model->get_user_detail($id);
if (!empty($data['user'])) {
$this->load->view('customer_detail',$data);
} else {
$this->load->view('404');
}
}