我可以从视图中调用控制器和模型吗?

时间:2014-01-31 01:54:34

标签: php model-view-controller

我有PHP / MVC的问题。 这是我的索引控制器。

<?php
class Index extends Controller {
    function __construct() {
        parent::__construct();
    }
    function index() {
        $this->view->render('header');
        $this->view->render('index/index');
        $this->view->render('footer');
    }
    public function test(){
        $this->model->test();
    }
?>

这就是索引模型。

<?php
class Index_Model extends Model{
    public function __construct()    {
        parent::__construct();
    }
    public function test()    {
        return $this->db->select('SELECT text FROM test');
    }
}
}

如何在“索引视图”中使用它?

1 个答案:

答案 0 :(得分:1)

当然你可以从你的视图中调用控制器和模型方法(如果不可能那么你需要在你的视图中放置一切)。 MVC的想法不是完全分离(有些人错误地认为),而是逻辑分离。这意味着可以在MVC拱的不同部分之间传递数据;我们的想法是你要确保每个部分的逻辑都是适合该部分的逻辑。

许多人会为了寻找一些愚蠢的理想而过度复杂化。我将一起摆脱控制器方法并直接在视图中引用模型方法,如果您正在做的是抓取一些数据以在视图中显示。没有理由浪费时间和精力将这些结果传递给控制器​​,只是为了传递回视图。一旦你建立了一个真正庞大的网站并看看你将要花费的所有努力(然后再保留所有这些),你会感谢我的建议。

我的理念是应该使用控制器(控制应用程序逻辑)。如果要显示一个侧栏,其中包含与控制器无关的最新帖子的列表,因此不应向其添加任何代码。省去一些头痛并从视图中调用模型。最后,如果你这样做,你的代码会更有意义。

回答您的问题:您无法在视图中使用您的控制器方法,因为它不会返回任何内容。