我知道这个问题已经被问到了。但我还是不明白。
现在我试图了解如何使用MVC Modell。 但我不知道如何整合所有东西,现在我在犹豫是否真的得到它之前使用框架。
我努力实现的目标:
我希望标题,页脚和菜单始终保持不变。 像这样:
HEADER
MENU
{CONTENT}
FOOTER
所以我的想法是:
我的控制器获取一些信息,让我们说它是一个用户ID。
Controller从Model中调用一个方法: 获取USER的所有数据ID:1
然后控制器将DATA传递到视图中,让我们说一个列表。
那么从哪里开始呢? 控制器是否应将此视图传递到另一个视图?
像:
$site = new View(); <br>
$site->wholeSite($content);
然后网站就像:
HEADER
MENU
{$content}
FOOTER
请原谅我的简单方法,我只是想了解它背后的基本想法,我已经阅读了谷歌搜索它的前20页。 只是不能让我的头围绕它..... 如果你能为初学者解释它,那将是非常好的:)
提前致谢!
答案 0 :(得分:1)
您可以从控件中调用多个视图,如:
pc
如果您有嵌套div,那么您可以使用常规包含函数,例如来自特定视图文件。
$this->load->view('header',$data);
$this->load->view('menu',$data);
$this->load->view('content',$data);
$this->load->view('footer',$data);
根据视图文件的路径。数据也会从父视图传输到包含的文件。
答案 1 :(得分:0)
通常,MVC应用程序具有通用布局视图,其中包含页眉,页脚和菜单。有时需要的数据是在控制器外部处理的,比如你的init脚本或bootstrap。
MVC纯粹主义者可能会从控制器传递布局所需的所有数据,但这可能是重复的,尽管在抽象控制器构造中设置数据可能会减轻这一点。
关于观点和子观点的问题,通常有两种解决方案:
A。)您有一个主要视图,其中传递了所有必需的数据。在该视图中,调用子视图(部分),并将数据传递给它们。
B。)您在控制器中实例化所有视图,将所需的所有数据直接传递到视图中,然后将视图作为参数传递到其他视图中。
这两种方法各有利弊。我发现第一个选项导致Fat Controllers减少,所以我通常会这样做。
我建议你学习一个现有的MVC框架(CodeIgniter,现在已经不存在了,足以让它成为一个很好的切入点),因为它会向你展示如何完成任务。