ap/ap-xml-strategy

为Zend Framework 2提供的XmlStrategy。当ViewModel是XmlModel类型或Accept头包含"application/xml"媒体类型时,AP_XmlStrategy会选择Xml Render。

dev-master 2013-11-14 17:19 UTC

This package is not auto-updated.

Last update: 2024-09-22 02:47:19 UTC


README

版本 1.0.0 由Alessandro Pietrobelli创建

描述

与最新版本的Zend Framework 2.0.4类似,AP_XmlStrategy会选择Xml Render,如果ViewModel是XmlModel类型或Accept头包含"application/xml"媒体类型。使用新的控制器插件acceptableViewModelSelector(),您可以根据指定的Accept头条件选择和设置适当的ViewModel。

要求

PHP >= 5.3.3

Zend Framework >= 2.0.4

安装

使用Composer

"ap/ap-xml-strategy": "dev-master"添加到您的composer.json文件,然后运行php composer.phar update

使用Git子模块

将此项目克隆到您的```./vendor/```目录

git submodule add git://github.com/alessandropietrobelli/AP_XmlStrategy.git vendor/AP_XmlStrategy

在您的application.config.php文件中启用它

<?php
return array(
    'modules' => array(
        // ...
        'AP_XmlStrategy',
    ),
    // ...
);

安装后

类似于Zend Framework 2.0.4变更日志示例

<?php
namespace SomeNamespace\Controller;

use Zend\View\Model\JsonModel;
use Zend\View\Model\FeedModel;
use AP_XmlStrategy\View\Model\XmlModel;

class SomeController extends AbstractActionController
{
    protected $acceptCriteria = array(
        'Zend\View\Model\JsonModel' => array(
            'application/json',
        ),
        'Zend\View\Model\FeedModel' => array(
            'application/rss+xml',
        ),
        'AP_XmlStrategy\View\Model\XmlModel' => array(
            'application/xml',
        ),
    );

    public function apiAction()
    {
        $viewModel = $this->acceptableViewModelSelector($this->acceptCriteria);
        
        if ($viewModel instanceof JsonModel) {
            return new JsonModel(array(
                'response' => 'foo',
                )
            );
        }

        if ($viewModel instanceof FeedModel) {
            return new FeedModel(array( 
                'response' => 'foo',
                )
            );
        }

        if ($viewModel instanceof XmlModel){
            return new XmlModel(array( 
                'response' => 'foo',
                )
            );
        }
    }
}