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)。