我目前正在用PHP设计自己的MVC框架。我已经阅读了很多关于MVC框架的内容,并且在控制器处理模型和渲染视图时做了一个,尽管不建议这样做。
结构的工作原理如下:bootstrap类根据URL加载适当的控制器,方法和变量。它还启动了一个maincontroller,mainmodel和mainview,它们具有一些通用功能。控制器启动他们的模型,最后渲染他们的模板。
问题是我有3个MVC对象。顶级菜单,搜索栏和表格。我希望这些在同一页面上呈现。但是,由于我让控制器进行渲染,我无法在同一网页中渲染三个不同的部分。我是否需要某种辅助类,如果需要,我该如何以正确的方式实现它?
网址如下:localhost / MyApp / grid。
每个控制器都包含以下代码:
$this->view->render(filepath/file.php)
每个模板都包含代码:
echo $this->data
答案 0 :(得分:2)
我目前正在用PHP设计自己的MVC框架。
那里有大错,相信我 - 我试过了。它并没有很好地结束。
我已经阅读了很多关于MVC框架(..)
的内容
更大的错误。框架不实现MVC。因此,无论你读到什么,只是有人试图将他们的抛光狗屎卖为黄金。
(..)并且在控制器处理模型并呈现视图(..)
之前
Controller不负责渲染模板(因为我不相信你实际上有视图)并且没有多个“模型”。
</rant>
你需要的是一个合适的模板引擎。试试twig。让模板引擎处理共享部分。
答案 1 :(得分:1)
有一些不同的概念可以解决这个问题。
在我的一个项目中,我将模板中的html拆分,视图根据需要加载每个区域。
例如:
$this->renderTemplate('page.header', $pageHeaderModel);
$this->renderTemplate('page.content.'.$viewKey, $pageContentModel);
$this->renderTemplate('page.footer', $pageFooterModel);
在每个页面上,内容模型都会更改,而另一个页面保持不变。