может ли кто-нибудь сказать мне, как мне получить доступ к модели из представления в кодеригере?
Получить доступ к модели из представления в codeigniter?
Ответ 1
Загрузите модель на контроллер
$this->load->model('yourmodel');
Присвойте этой модели переменной var, подобной этой
$data['model_obj'] = $this->yourmodel;
и присвойте этот массив данных вашему шаблону вида
Использовать объект $model_obj в шаблоне представления для вызова методов модели
$model_obj->some_method()
Надеюсь, что это поможет...
Ответ 2
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: Как единственный ответ, который вы приняли за абсолютную ошибку?
Ответ 3
Смотрите тему:
Кстати, для чего вам нужно получить доступ к model
из view
, вы можете отправить данные модели в представление из controller
тоже, что является обычным и лучшим подходом.
В качестве хорошей заметки держите логику обработки вне представления, вместо этого следует использовать controller
.
Ответ 4
Вы можете использовать следующий код:
$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
Ответ 5
Так как $model не является объектом, вы можете сделать вызов в "таблицу" модели, используя оператор разрешения области "::", который может вызывать функцию самого класса без какого-либо экземпляра объекта.
$this->load->model('table');
table::some_funct();
Примечание: вам также нужно сделать статическую функцию "some_funct" внутри вашей "таблицы" модели.
Ответ 6
Эй. Вы можете получить доступ из режима просмотра в тот же режим, что и на своем контроллере. Помните, что вид доступа к моделям, которые импортируют его контроллер.
Ответ 7
в исходном UML Я, кажется, для архитектуры MVC, рассматриваю методы вызова в модели.
http://www.as3dp.com/wp-content/uploads/2010/02/mvc_pope_krasner.png
.. но на практике с PHP-приложениями, поскольку настойчивость не отслеживает изменения состояния объектов между запросами (или, по крайней мере, неэффективно), я считаю, что лучше поддерживать все вызовы метода модели в контроллере и передавать результат в если возможно.
Ответ 8
Вы можете получить доступ к основному методу из представления в кодировщике.
public function index()
{
$this->load->model('persons');
$data['mydata'] = $this->persons->getAllSessionData();
$this->load->view('test_page', $data);
}
в поле зрения
print_r ($mydata);
моя функция вернула массив.