Получить доступ к модели из представления в 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);

моя функция вернула массив.