1

我正在开发一个基于Zend Framework的应用程序,并且我正在初始化引导中的MVC。现在,我在应用程序中添加了AJAX层,因此在控制器操作中,我禁用了视图渲染,并开始质疑我首先在bootstrap中启动MVC的方法。我还需要在应用程序中添加一些cron/cli支持,所以我还需要停止该部分的MVC渲染。简而言之,当我们不需要MVC时,会出现一些情况(AJAX,Cli,Cron等),但它最初是作为引导的一部分执行的,稍后我们会强制停止它。Zend Framework,MVC,Ajax和Cli/Cron

所以我确定必须有另一种方法来更加优雅地处理这种情况,而不是在开始时启动MVC,我们可以在将输出发送给客户端之前在发起MVC的过程中启动它。

回答

0

让我们对在index.php应用程序启动非常快看:

$application->bootstrap() // here you load and configure your resources 
      ->run();  // here you launch the request handling, dispatching, mvc, etc.. 

当你想在CLI上下文中使用你的应用程序,你会希望只引导,不运行MVC应用程序。只需省略->run()即可。

当然,你可以只初始化只有你在你的脚本所需要的资源:

$app->bootstrap('cachemanager')->bootstrap('db'); 

对于Ajax,如果你需要的控制器和行动,需要你所谓的“MVC”。最近有这个SO question,你可以在这里找到关于“Ajax控制器”概念的更多细节。

1

为什么你不需要AJAX或CLI的MVC?这种上下文切换是MVC存在的原因:保留模型和/或控制器,但使用另一个视图。

但也许你可以创建另一个引导文件(而不是index.php),让我们说cli.php和ajax.php,以避免一些你只是初始化“常规”请求(导航,路线,布局+视图管理,acl,..)。目前,我不使用另一个引导文件,因为AJAX非常适合我当前的结构(除了布局,但有一个contextSwitch)。