【问题标题】:Codeigniter $this->load->view to a Particular Section of page (Data-Toggle - Tab)Codeigniter $this->load->view to a Particular Section of page (Data-Toggle - Tab)
【发布时间】:2015-12-07 21:31:41
【问题描述】:

我有这个管理面板,我在其中使用不同的数据切换选项卡。

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

【问题讨论】:

  • 您的意思是 form_validation 错误吗?您能否显示您的仪表板方法代码和包含redirect('user/dashboard#new'); 的方法的代码?
  • 感谢您的回复。我刚刚添加了代码。

标签: php codeigniter codeigniter-3


【解决方案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 { ... }
}

从表单验证类获取错误数组(对于下面的 cmets):

class MY_Form_validation extends CI_Form_validation {
    public function error_array()
    {
        return $this->_error_array;
    }
}

【讨论】:

  • 非常感谢您的快速解决方案。我刚刚添加了 查看文件,它就像一个魅力。
  • 只是一件事。所有这些错误都显示在一个地方。我可以将它们分解为表单的字段值并将它们显示在视图文件中每个字段的前面吗?
  • 扩展表单验证类以添加一个方法来返回它已经使用的数组(默认情况下它是一个受保护的变量)。我在上面添加了一个示例。然后就可以用$this->form_validation->error_array()代替validation_errors()来获取数组了。
猜你喜欢
  • 2022-12-19
  • 2016-05-15
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多