如何在作为RESTful运行时使用行为?

时间:2015-02-25 12:29:24

标签: rest yii yii2

我遵循有关如何使用Yii2创建RESTful服务的说明*,但行为方法会导致错误:

Response content must not be an array.

如果我删除了行为方法,那么我会收到我期望的JSON响应。我在阅读了另一篇文章后尝试删除行为方法**。

但是我对行为有点不熟悉。我们可以不使用带有REST的Yii2行为或者这是一个错误吗?如果有人能对此有所了解,我将非常感激。

* http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html ** http://www.yiiframework.com/forum/index.php/topic/60432-rest-api-failing-with-behaviours/

1 个答案:

答案 0 :(得分:8)

您的问题是您已完全覆盖了behavior()方法。父类具有附加的行为,用于协商内容标头和响应格式。为了解决这个问题,你的行为需要返回一个与父行为合并的数组。所以你的behavior()方法看起来像这样;

public function behaviors() {
    return ArrayHelper::merge(parent::behaviors(), [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'delete' => ['post'],
                    ],
                ],
    ]);
}

您需要记住在控制器类的顶部添加use yii\helpers\ArrayHelper