为什么在Codeigniter中首先加载模型?

时间:2015-11-08 21:27:06

标签: php codeigniter

我有用户库currentLang,用于检测网站的当前语言。 还有一个模型可以请求并从中获取数据。

请求基于当前语言。 这是在自动加载中设置的库currentLang。 问题是在库文件之后首先加载Codeigniter中的所有模型。 因此,当我打开网站时,我得到空页面,因为查询是在没有来自库的参数的情况下完成的。

我必须以这种方式改变什么?

1 个答案:

答案 0 :(得分:0)

首先加载哪一个并不重要,只要您能够在CodeIgniter实例中注入当前语言ID,您就可以了。

示例:

// Library
class CurrentLang  {

    // A variable that will hold the CodeIgniter object.
    protected $CI;

    public function __construct () {
        $this->CI = get_instance();
        $this->set_language();
    }

    protected function set_language () {
        // Some code to determine which language to set (your logic goes in determine_language method in this class)
        $Language = $this->determine_language();
        // then we inject the language id in the instance as follows.
        $this->CI->CurrentLanguageId = $Language->id;
    }
}

// Model
class Some_model extends CI_Model {

    public function get_posts () {
        $q = $this->db
                ->where('language_id', $this->CurrentLanguageId)
                ->limit(10)
                ->get('posts');

        return $q->result();
    }
}

请记住CodeIgniter 3x中库名中的第一个字母应该大写。