PHP MVC从视图调用控制器函数


PHP MVC Call Controller Function From View

尝试学习PHP MVC。到目前为止一切都很好。我的身体里有这样的功能/controllers/index.php

<?php
class Index extends Controller {
    function __construct() {
        parent::__construct();
    }
    function showFeeds() {
        return 'done';
    }
}
?>

我知道如何调用模型类并在模型类上运行showFeed()。我的问题是如何在我的上打印"完成"/views/index.php。有什么选项。

我已经试过下面列出的一些。但没有运气。

  1. 父级::showFeeds()
  2. $this->controller->showFeeds()

最后我解决了的问题

页码:/controllers/index.php

<?php
class Index extends Controller {
    function __construct () {
        parent::__construct ();
    }
    function showFeeds () {
        return 'done';
    }
}
?>

页码:/views/index/index.php

<?php
$_index = new Index ();
$params = $_index -> showFeeds ();
?>

您最好使用MVC 的PHP框架

一些框架是:

Codeigniter、Zend和CakePHP

这些框架使用MVC和它们自己的语法,所以使用起来非常简单。我个人使用Codeigniter,它相当容易

例如,在代码点火器中,您可以这样做:

控制器:

function showFeed(){
$data['done'] = 'Done';
$this->load->view('yourview', $data);
}

视图:

<?php echo $done; ?>

在MVC中,通常来说,控制器应该处理模型,获取视图,设置视图的数据,然后调用视图或返回视图来渲染视图。

您要做的是从视图回调到控制器。我建议将showFeeds()移动到模型中。在控制器中,调用模型以获得showFeeds()的结果并将值传递给视图,最后调用视图进行渲染。

通常,您的控制器将生成视图。要生成视图,需要参数,这些参数通常是要显示的数据。

例如,对于HelloWorld控制器,其概念如下:

class HelloWorldController extends Controller {
    function indexAction($name) { // The index page of your site for example
        return $this->getView()->render('helloworld.html', array('name' => $name))
    }
}

然后在您的视图中,您将打印类似"你好"的内容$name,它是您在渲染函数中传递的名称。