Можно ли использовать $ this-> load-> vars ($ array) из модели вместо контроллера?
Как уже упоминалось, да, вы можете сделать это, вы даже можете загрузить представление из модели или даже запустить $this->load->vars()
в представлении и загрузить еще одно представление.
Это позволит мне абстрагироваться от некоторых деталей измой Контроллер, делающий его чище.
Это все равно, что подметать грязь под ковриком, он не ушел - он просто ушел куда-то еще, где вы обязательно столкнетесь с ним позже.
Вы бы порекомендовали его;Как вы думаете, это ломает MVC?
Это ничего не «сломает», но подразумевает, что, возможно, ваша концепция MVC несколько нарушена.Если он не имеет никакого отношения к слою данных и не имеет отношения к слою представления, он не принадлежит модели.Есть хороший шанс, что могут быть и другие вещи, которые тоже не совсем там принадлежат ...
Я использую Datamapper ORM, поэтому мои модели фактически расширяют объект Datamapper, а не Modelobject.
Возможно, вам потребуется вызвать get_instance()
и присвоить его переменной или свойству класса для использования в моделях DM, чтобы вы могли получить доступ к объекту Codeigniter.
Пример:$CI =& get_instance(); $CI->load->vars();
Предложение:
Возвращает данные из модели в простейшей, наиболее пригодной для повторного использования форме, а затем присваивает их переменным вида в Controller.Если я выискиваю источник некоторых переменных в файле представления, то место, в котором я их ищу, находится last в Модели.Вы можете в конечном итоге вернуться к этому проекту в будущем, поэтому постарайтесь быть максимально последовательным и придерживаться предложенных, ожидаемых методов.