PHP MVC在同一页面中加载多个控制器模型和视图

PHP MVC在同一页面中加载多个控制器模型和视图,php,model-view-controller,Php,Model View Controller,我目前正在用PHP设计自己的MVC框架。我已经阅读了很多关于MVC框架的内容,并制作了一个控制器处理模型和渲染视图的框架,尽管不建议这样做 该结构的工作原理如下:引导类根据URL加载适当的控制器、方法和变量。它还启动maincontroller、mainmodel和mainview,它们具有一些通用功能。控制器启动其模型,并最终渲染其模板 问题是我有3个MVC对象。顶部菜单、搜索栏和表格。我想把它们呈现在同一页上。但由于我让控制器进行渲染,我无法在同一网页中渲染这三个不同的部分。我是否需要某种助

我目前正在用PHP设计自己的MVC框架。我已经阅读了很多关于MVC框架的内容,并制作了一个控制器处理模型和渲染视图的框架,尽管不建议这样做

该结构的工作原理如下:引导类根据URL加载适当的控制器、方法和变量。它还启动maincontroller、mainmodel和mainview,它们具有一些通用功能。控制器启动其模型,并最终渲染其模板

问题是我有3个MVC对象。顶部菜单、搜索栏和表格。我想把它们呈现在同一页上。但由于我让控制器进行渲染,我无法在同一网页中渲染这三个不同的部分。我是否需要某种助手类,如果需要,我如何以正确的方式实现它

url类似于:localhost/MyApp/grid

每个控制器都包含以下代码:

$this->view->render(filepath/file.php)
每个模板都包含以下代码:

echo $this->data

有一些不同的概念来处理这个问题

在我的一个项目中,我将html拆分为模板,视图根据需要加载每个区域

例如:

$this->renderTemplate('page.header', $pageHeaderModel);
$this->renderTemplate('page.content.'.$viewKey, $pageContentModel);
$this->renderTemplate('page.footer', $pageFooterModel);

在每一页上,内容模型都会发生变化,而另一页保持不变。

有一些不同的概念来处理这个问题

在我的一个项目中,我将html拆分为模板,视图根据需要加载每个区域

例如:

$this->renderTemplate('page.header', $pageHeaderModel);
$this->renderTemplate('page.content.'.$viewKey, $pageContentModel);
$this->renderTemplate('page.footer', $pageFooterModel);
在每个页面上,内容模型都会发生变化,而其他页面则保持不变

我目前正在用PHP设计自己的MVC框架

这是个大错误,相信我,我试过了。结局并不好

我读了很多关于MVC框架的书(…)

更大的错误。框架不实现MVC。所以,无论你读到什么,都只是有人想把他们擦得锃亮的狗屎当金子卖

(..)并制作一个控制器处理模型和渲染视图的场景(..)

Controller不负责渲染模板(因为我不相信您实际上有视图),并且没有复数“模型”

你需要的是一个合适的模板引擎。尝试让模板引擎来处理共享部分

我目前正在用PHP设计自己的MVC框架

这是个大错误,相信我,我试过了。结局并不好

我读了很多关于MVC框架的书(…)

更大的错误。框架不实现MVC。所以,无论你读到什么,都只是有人想把他们擦得锃亮的狗屎当金子卖

(..)并制作一个控制器处理模型和渲染视图的场景(..)

Controller不负责渲染模板(因为我不相信您实际上有视图),并且没有复数“模型”


你需要的是一个合适的模板引擎。尝试让模板引擎来处理共享部分。

下面是我的代码中的一个工作示例:下面是我的代码中的一个工作示例:那么您的意思是,切换到Symfony或Laravel之类的东西?我来看看小树枝,谢谢。@ICECold我什么时候说了这么蠢的话,比如“换成Symfony或Laravel之类的东西”。我告诉过你尝试使用Twig,它是一个独立的作曲家软件包。所以你的意思是,切换到Symfony或Laravel之类的东西?我来看看小树枝,谢谢。@ICECold我什么时候说了这么蠢的话,比如“换成Symfony或Laravel之类的东西”。我告诉过你尝试使用Twig,它是一个独立的作曲家软件包。