【问题标题】:How to load a view based on condition in Controller (Codeigniter)如何根据控制器中的条件加载视图(Codeigniter)
【发布时间】:2015-06-06 08:24:37
【问题描述】:

我是 Codeigniter 的新手。我正在尝试制作一个简单的网站,如果该网站已启用 (1) 或未启用 (0),它将在数据库中获取其“设置”。

我正在尝试确定网站设置是否启用 (1) 或未启用 (0) 并显示索引视图(如果站点值 == 1)

和维护视图(如果站点值为 == 0 或 null)


我已经编写了代码,并且可以在视图中回显“站点”值。

型号

function getsetting() {
$this->db->select("site");
$this->db->from('configuration');
$query = $this->db->get();
$ret = $query->row();
return $ret->site;
}

控制器

    //if site value is == 1 load the normal view
    $this->load->view('index', $data);
    //else load the maintenance view
    $this->load->view('maintenance', $data)

我有一个数据库“mysite”,其中包含一个表“配置”和一个列“站点”,值 [null 或 1] 来自站点列,用于确定应显示的视图。




接受任何帮助。提前致谢。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    型号 这里你需要使用$query->row();获取单行并将其传递给控制器​​

    function getsetting() {
    $this->db->select("site");
    $this->db->from('configuration');
    $query = $this->db->get();
    $ret = $query->row();
    return $ret->site;
    }
    

    正如你在问题中描述的那样

    the values [null or 1]
    

    控制器

    function your_controler() {
    
            $this->load->model('model_file');
    
            $site = $this->model_file->getsetting();
            if(isset($site) && $site==1){// your condition here
            $this->load->view('index', $data);
            }else{
                $this->load->view('maintenance', $data)
    
            }
    
        }
    

    【讨论】:

    • 为什么控制器总是显示维护视图,我已经尝试在“站点”上交换 (0/1) 值
    • 检查$site = $this->model_file->getsetting();它返回什么??
    【解决方案2】:

    为你的控制器使用类似的东西:

    $setting = $this->modelName->getsetting();
    
    if($setting['maintenance'] == 1){
    
        $this->load->view('maintenance', $data);
    
    } else {
    
         $this->load->view('index' $data);
    
    }
    

    务必将“modelName”替换为“getsetting”方法的模型名称。

    【讨论】:

    • 代码有效,但显示此错误“消息:未定义索引:站点”
    【解决方案3】:

    如果您想在维护模式下禁用所有方法访问,请在控制器的构造函数中执行以下操作,

    public function __construct()
    {
        parent::__construct();
        $site = $this->Datamodel->getsetting();
        if(isset($site->site) && $site->site==1)
        {
            $this->load->view('index');
            die;
        }
    }
    

    【讨论】:

    • 我会试试的。很好的建议@Viral
    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多