从codeigniter中查看访问模型?

son*_*ill 11 php codeigniter

任何人都可以告诉我如何从codeigniter中的视图访问模型?

rav*_*oni 17

在控制器上加载模型

$this->load->model('yourmodel');
Run Code Online (Sandbox Code Playgroud)

将此模型分配给这样的var

$data['model_obj'] = $this->yourmodel; 
Run Code Online (Sandbox Code Playgroud)

并将此数据数组分配给您的视图模板

在视图模板上使用$ model_obj对象来调用模型方法

$model_obj->some_method()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 ...

  • 不过,您不应该从视图调用模型。这违背了 MVC 模型。您应该将业务逻辑与视图分开。 (2认同)

Sar*_*raz 6

看线程:

查看调用模型

通过你为什么需要访问的方式modelview,你可以将模型数据从发送到视图controller过这是通常的和更好的方法.

作为一个好注意事项,保持处理逻辑不在视图之外,您应该使用它controller.

  • 这里没有注意到视图中有处理.在MVC中,视图可以访问模型.请参阅:http://www.phpwact.org/pattern/model_view_controller (6认同)
  • 断链.Codeigniter改变了他们的论坛. (2认同)

bsc*_*fer 5

CodeIgniter的$this->load->model()返回绝对没有.看看它:system/libraries/Loader.php.

这绝不会输出任何东西:

$model = $this->load->model('table');

print_r($model);
Run Code Online (Sandbox Code Playgroud)

下一个例子会给你一个致命的错误Call to a member function some_func() on a non-object:

$model = $this->load->model('table');

$model->some_func();
Run Code Online (Sandbox Code Playgroud)

这个功能是否存在并不重要,$model不是一个对象.

要做的是在模型中有一个返回数据的方法,然后调用该函数并将结果传递给您的视图文件:

$this->load->model('table');
$data = $this->table->some_func();
$this->load->view('view', $data);
Run Code Online (Sandbox Code Playgroud)

PS:你接受绝对错误的唯一答案是怎样的?


Pri*_*ari 5

您可以使用以下代码:

   $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
Run Code Online (Sandbox Code Playgroud)