Codeigniter $ this-> load->查看页面的特定部分(Data-Toggle - Tab)

时间:2015-12-07 21:31:42

标签: php codeigniter codeigniter-3

我有这个管理面板,我使用不同的数据切换标签。

在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');
}}}

1 个答案:

答案 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;
    }
}