在Codeigniter中:如何识别视图的模型和控制器?

问题描述:

有没有一种方法来识别类似print_r($model)print_r($controller)的视图的型号名称和控制器名称?在Codeigniter中:如何识别视图的模型和控制器?

例如:

view.php

<div class="data"> 
<?php 
echo "this is from".$controller; 
echo "this is from".$model; 
?> 
</div> 
+2

你在混淆MVC是什么,它不是一个“我从哪里输出”的问题,它只是组织,你可以在任何地方技术上输出任何东西。但要正确做到这一点,只需要在VIEW部分输出,模型传递给控制器​​,控制器进行查看等。 – Jakub

你可以利用这个得到控制器的名称:

$this->router->fetch_class(); 

你要通过控制器的名称,查看(作为变量)。
但是,您无法在视图中识别模型 - 可能有多个模型(在一个控制器中)。最好的方法是在模型中创建方法并将其分配给传递给视图的变量。

你不应该传递的东西从模型直奔视图。 http://codeigniter.com/user_guide/overview/mvc.htmlhttp://codeigniter.com/user_guide/overview/appflow.html

如果你想传递信息到你可以做到这一点。

model_name.php

//Class Declaration 

    function get_data() 
    { 
     return 'This is the Model Data'; 
    } 

Controller.php这样

//Class Declaration 
    function index() 
    { 
     $data['controller'] = 'Data From the Controller'; 
     $data['model'] = $this->Model_Name->get_data(); 
     $this->load->view('view.php', $data); 
    } 

视图保持和你一样有。

+0

如果我有数百个模型和控制器,该怎么办?我只是想过使用它,但是当我完成识别 – kedomonzter

+1

时,会花费我很长时间并撤销。为什么您需要数百个控制器?你当然会先计划你的申请,然后编码。大多数应用程序不需要100个控制器或模型,除非它们非常复杂。 – Jakub

控制器可以从多个模型中调用,并且视图由控制器指定(或包含在控制器指定的视图中)。你真的不应该直接从模型中调用数据到视图中。

如果您不使用路由(或以其他方式)更改段名称,则可以从适当的URI段获取控制器名称。我不确定一次有两个控制器是可能的。再一次,我从来没有必要尝试。

我想你可以在每个函数下手动设置控制器中的变量,并在页面上将它们回显出来,但是没有内置的自动化方法来执行你正在寻找的任务。