может ли кто-нибудь сказать мне, как мне получить доступ к модели из представления в кодеигнитре?
Загрузите модель на контроллер
$this->load->model('yourmodel');
Присвойте этой модели переменной var
$data['model_obj'] = $this->yourmodel;
и назначьте этот массив данных вашему шаблону просмотра
Использовать объект $ model_obj в шаблоне представления для вызова методов модели
$model_obj->some_method()
Надеюсь это поможет …
CodeIgniter $this->load->model()
абсолютно ничего не возвращает. Посмотрите на это: system/libraries/Loader.php
.
Это ничего не выведет:
$model = $this->load->model('table'); print_r($model);
И этот следующий пример даст вам фатальную ошибку. Call to a member function some_func() on a non-object
:
$model = $this->load->model('table'); $model->some_func();
Неважно, существует ли эта функция даже, $model
не является объектом.
Дело в том, что в вашей модели есть метод, который возвращает данные, затем вызывает эту функцию и передает результаты в файл вида:
$this->load->model('table'); $data = $this->table->some_func(); $this->load->view('view', $data);
PS: Как единственный ответ, который вы приняли за абсолютную ошибку?
Просмотр темы:
Просмотр вызова модели
Кстати, зачем вам нужно получить доступ к model
из view
, вы также можете отправить данные модели в представление с controller
что является обычным и лучшим подходом.
В качестве хорошей заметки держите свою логику обработки вне представления, вместо этого вы должны использовать controller
.
Вы можете использовать следующий код:
$ci =&get_instance(); $ci->load->model(your model); $ci->(your model)->(your function); Note: You have to call your model in your controller.Its working fine
Поскольку $ model не является объектом, вы можете сделать вызов таблицы «table» с помощью оператора разрешения «::», который может вызывать функцию самого класса без какого-либо экземпляра объекта.
$this->load->model('table'); table::some_funct();
Примечание: вам также нужно сделать статическую функцию «some_funct» внутри вашей «таблицы» модели.
Привет. Вы можете получить доступ из режима просмотра в тот же режим, что и на своем контроллере. Помните, что вид доступа к моделям, которые импортируют его контроллер.
в исходном UML я выгляжу для архитектуры MVC, просматриваю методы вызова в модели ..
http://img.ruphp.com/php/mvc_pope_krasner.png
… но на практике с PHP-приложениями, поскольку настойчивость не отслеживает изменения состояния объектов между запросами (или, по крайней мере, неэффективно), я считаю, что лучше поддерживать все вызовы методов модели в контроллере и передавать результат, чтобы посмотреть, если возможно ,
Вы можете получить доступ к основному методу из представления в кодировщике.
public function index() { $this->load->model('persons'); $data['mydata'] = $this->persons->getAllSessionData(); $this->load->view('test_page', $data); }
ввиду
print_r ($mydata);
моя функция вернула массив.