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

Dub*_*bby 4 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-失败与-行为/

Joe*_*ler 8

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

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

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