我一直在尝试了解MVC,但我对控制器输入流程以及模型有一些疑问。
当controller.php知道search.php被选中后,它将加载模型,然后加载view.php。但是在调用它们时,代码看起来就像这样。
class Search extends Core_Search_Controller
public function inboxSearch(){
$this->view->navigation = $this->navigation();
$this->load->box = $this->box();
}
没有文件夹或类视图,也没有用于加载的文件夹或类。我可以在不同的文件中找到功能导航,但其文件夹位于不同的位置。如何在没有包含或要求的情况下访问该文件?
我知道它很长,抱歉。
* 编辑: *从我从项目中学到的东西是,控制器中的所有功能都有Action就在它们的末尾将指向一个视图对应的名字。例如index.php / .tpl
class IndexController extends Zend_Controller_Action{
public function indexAction(){
/**
Somecode
**/
}
}
干杯
答案 0 :(得分:0)
大多数MVC框架为你做了大量的幕后魔术,这可能是你对事情如何运作感到困惑的原因。
要回答您的第一个问题,大多数框架都使用带有重写规则的.htaccess文件,该规则会将所有流量重定向到您的控制器。因此,当您请求search.php时,它实际上将调用控制器而不是search.php。从那里,控制器可以查看您最初请求的内容(在本例中为search.php),以确定适当的模型和视图。
我相信你的第二个问题的答案是它会根据需要自动加载文件。这是另一种魔力,它可以查看类名并找出文件的位置并加载它。您可以在PHP手册中阅读更多相关信息。 http://php.net/manual/en/language.oop5.autoload.php
要回答您的上一个问题,获取所请求的信息通常由控制器在查看请求时处理。例如,如果您请求“example.com/blog/7263”,它将确定您需要“博客”模型并且ID号为7263.根据您使用的框架,您配置此方式会有所不同。
我希望这有点帮助。