Yii2 RESTful API - 使用带属性的自定义XML模式

时间:2018-01-15 10:53:49

标签: xml rest xsd yii2

我已经创建了一个带有身份验证和自定义操作的RestController。

为了显示所需的信息,我在模型中使用了fields方法,如下所示:

public function fields()
{
    return [
        'title',
        'description',
        'street',
        'postalcode',
        'city',
        'url' => function () {
            return 'https://someurl.com/';
        },
    ];
}

Action使用此架构返回XML响应:

<response>
    <title>The title</title>
    <description>Some text</description>
    <street>Streetname</street>
    <postalcode>Postalcode</postalcode>
    <city>City</city>
    <url>https://someurl.com/</url>
</response>

但是我想使用特定的/嵌套的XML Schema来在另一个系统中使用响应。这可能如下所示:

<real_estate>
    <object_information>
        <title>The title</title>
        <description>Some text</description>
    </object_information>
    <geo>
        <street>Streetname</street>
        <postalcode>Postalcode</postalcode>
        <city>City</city>
    </geo>
    <url>https://someurl.com/</url>
</real_estate>

如何使用自定义字段名称和嵌套元素创建这样的XML Scheme?

1 个答案:

答案 0 :(得分:0)

谢谢Yupik!我可以使用以下代码实现解决方案:

public function fields()
{

    return [
        'object_information' => function($model) {
            return [
                'title' => $model->title,
                'description' => $model->description
            ];
        },
        'geo' => function ($model) {
            return [
                'street' => $model->street,
                'postalcode' => $model->postalcode,
                'city' => $model->city,
            ];
        },
        'url' => function ($model) {
            return 'https://someurl.com/';
        },
    ];
}