ZendFramework-2.4 源代码 - 关于MVC - View层 - 控制器返回值

<?php
class 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;
    }
    
}

 

posted on 2017-02-10 18:29  周~~  阅读(237)  评论(0编辑  收藏  举报

导航