我遵循有关如何使用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/
答案 0 :(得分:8)
您的问题是您已完全覆盖了behavior()方法。父类具有附加的行为,用于协商内容标头和响应格式。为了解决这个问题,你的行为需要返回一个与父行为合并的数组。所以你的behavior()方法看起来像这样;
public function behaviors() {
return ArrayHelper::merge(parent::behaviors(), [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
]);
}
您需要记住在控制器类的顶部添加use yii\helpers\ArrayHelper
。