標籤:tcap view headers sub listen create environ code pen
<?phpclass ReturnController extends AbstractActionController{ public function returnAction() { // 返回方式一 :會被dipatch處理器Zend\Mvc\View\Http\CreateViewModelListener::createViewModelFromArray(...)的攔截處理 return array(‘key1‘ => ‘key1value‘); // == new ViewModel(array(‘key1‘ => ‘key1value‘)); // 返回方式二: 會被dipatch處理器Zend\Mvc\View\Http\CreateViewModelListener::createViewModelFromNull(...)的攔截處理 return null; // == new ViewModel(); // 返回方式三:會避過dipatch處理器Zend\Mvc\View\Http\InjectTemplateListener::injectTemplate(...)的攔截處理 // case.0 { $viewModel = new ViewModel(array( ‘key1‘ => ‘key1value‘, )); $viewModel->setTemplate(‘module1/ctrl1/action1‘); // 使用模板,可以不用設定,會自動識別 $viewModel->setTerminal(false); // false表示使用布局模板,預設是false $viewModel->setCaptureTo(‘content‘); // 放入布局檔案的中的變數中 return $viewModel; } // case.1 { // 模板 $data = array( ‘key1‘ => ‘key1value‘, ); $viewModelTop = new ViewModel($data); $viewModelTop->setTemplate(‘module1/ctrl1/action1‘); // 使用模板,可以不用設定,會自動識別 $viewModelTop->setTerminal(false); // false表示使用布局模板,預設是false $viewModelTop->setCaptureTo(‘content‘); // 放入布局檔案的中的變數中 $viewModelTop->setVariables(array( ‘childrenStr‘=>‘‘ )); // 子模板 $viewModelSub = new ViewModel($data); $viewModelSub->setTemplate(‘module1/ctrl1/action1sub‘); $viewModelTop->addChild($viewModelSub,‘childrenStr‘,true); return $viewModelTop; } // 返回方式四: 會避過後續所有的dipatch處理器的攔截處理 $reponse = new \Zend\Http\PhpEnvironment\Response(); { // headers $reponse->setStatusCode(200); $headers = new \Zend\Http\Headers(); $reponse->setHeaders($headers); // 添加http響應的cookie頭 $cookie = new \Zend\Http\Header\Cookie(array( ‘key1‘=>‘key1_value‘, ‘key2‘=>‘key2_value‘, )); $headers->addHeader($cookie); // 添加http響應的server頭 $server = new \Zend\Http\Header\Server(‘nginx/1.6.2‘); $headers->addHeader($server); } { // Content $reponse->setContent(‘<html><head></head><body><div>hello,i am zend framework 2.4 !</div></body></html>‘); } return $reponse; } }
ZendFramework-2.4 原始碼 - 關於MVC - View層 - 控制器傳回值