我有这个管理面板,我使用不同的数据切换标签。
在CI(3)中,如果我使用redirect('user/dashboard#new');
,则会将我重定向到正确的视图部分,但不会将其重定向到form_validation错误。
如果我尝试$this->dashboard('user/dashboard#new');
它会渲染错误,但却会导致错误的页面部分(而不是#new)。
我刚刚开始使用CI开发并寻求老年人的帮助。
提前致谢。
控制器(用户)
public function dashboard() {
if($this->session->userdata('is_logged_in')){
$data['homepage'] = '../../templates/vacations/users/dashboard';
$this->load->view('template_users',$data);
}else{
$data['session_error']='Either the session has expired or you have tried to access this page directly';
$this->load->view('../../templates/vacations/headfoot/header-login');
$this->load->view('../../templates/vacations/users/session-error', $data);
$this->load->view('../../templates/vacations/headfoot/footer-login');
}}
表单验证
if($this->form_validation->run() == FALSE)
{
$this->dashboard('user/dashboard#new');
} else {
$this->load->model('model_users');
if($query = $this->model_users->insert_property_details())
{
redirect('user/dashboard#new');
} else {
redirect('user/dashboard#new');
}}}
答案 0 :(得分:1)
$this->dashboard('user/dashboard#new');
只是在当前页面中运行/调用方法。 'user/dashboard#new'
什么都不做,因为无论如何都不会写入接受参数的方法:
public function dashboard(/* arguments would be here normally */) { ... }
在运行验证后立即重定向将无效,因为加载新页面时将丢失验证错误。
您需要将错误保存在某处,例如会话数据,然后重定向到仪表板,然后从保存的位置加载错误并将其显示在仪表板视图上。
以下是使用会话数据的示例。
表格方法:
if($this->form_validation->run() == FALSE)
{
$this->session->set_userdata('validation_errors', validation_errors());
$this->session->mark_as_flash('validation_errors'); // data will automatically delete themselves after redirect
redirect('user/dashboard#new');
}
else { ... }
仪表板方法:
public function dashboard()
{
if($this->session->userdata('is_logged_in')){
$data['validation_errors'] = $this->session->userdata('validation_errors');
$data['homepage'] = '../../templates/vacations/users/dashboard';
$this->load->view('template_users',$data);
} else { ... }
}
从表单验证类获取错误数组(以下评论):
class MY_Form_validation extends CI_Form_validation {
public function error_array()
{
return $this->_error_array;
}
}