繁体   English   中英

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

[英]PHP MVC load multiple controllers models and views in same page

我目前正在用PHP设计自己的MVC框架。 我已经阅读了很多有关MVC框架的文章,并提出了一个由控制器处理模型并呈现视图的框架,尽管不建议这样做。

该结构的工作原理如下:bootstrap类根据URL加载适当的控制器,方法和变量。 它还会启动一个具有一些常规功能的主控制器,主模型和主视图。 控制器启动其模型,最后渲染其模板。

问题是我有3个MVC对象。 顶部菜单,搜索栏和表格。 我希望将它们呈现在同一页面上。 但是由于我让控制器进行渲染,所以无法在同一网页中渲染三个不同的部分。 我是否需要某种帮助程序类,如果需要,如何正确地实现它?

网址应为:localhost / MyApp / grid。

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

$this->view->render(filepath/file.php)

每个模板都包含以下代码:

echo $this->data

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

在那里有大错误,请相信我-我尝试过。 结局不好。

我已经阅读了很多有关MVC框架(..)

更大的错误。 框架不实现MVC。 因此,无论您读什么书,都只是有人试图将其抛光的粪便作为黄金出售。

(..),然后由控制器处理模型并渲染视图(..)

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

</rant>

您需要的是合适的模板引擎。 尝试树枝 让模板引擎处理共享部分。

有一些不同的概念可以解决这个问题。

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

例如:

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

在每个页面上,内容模型都会更改,而另一个则保持不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM