以RESTful方式操作时如何使用行为?

以RESTful方式操作时如何使用行为?,rest,yii,yii2,Rest,Yii,Yii2,我正在按照说明*使用Yii2创建RESTful服务,但行为方法会导致错误: 响应内容不能是数组。 如果删除行为方法,则会收到预期的JSON响应。在阅读另一篇文章**后,我尝试删除行为方法 但是我对行为有点不熟悉。我们不能将Yi2的行为与REST一起使用,还是这是一个bug?如果有人能解释一下,我将不胜感激 * **您的问题是您完全重写了behaviors()方法。父类附加了协商内容头和响应格式的行为。为了避免这种情况,您的行为需要返回一个与父行为合并的数组。因此,您的behaviors()方法如

我正在按照说明*使用Yii2创建RESTful服务,但行为方法会导致错误:

响应内容不能是数组。

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

但是我对行为有点不熟悉。我们不能将Yi2的行为与REST一起使用,还是这是一个bug?如果有人能解释一下,我将不胜感激

*
**

您的问题是您完全重写了behaviors()方法。父类附加了协商内容头和响应格式的行为。为了避免这种情况,您的行为需要返回一个与父行为合并的数组。因此,您的behaviors()方法如下所示

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

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

您可以发布控制器的内容吗?这可能会对问题有所帮助。我无法发布内容,因为它包含的字符数超过了StackOverflow允许的字符数。但是,您可以在Github上看到它。请注意,我重命名了behaviors()以使其正常工作。将其重命名为test。谢谢你。我已经做了这个更改,但我现在在两点上感到困惑:1)它似乎没有调用UserController->actionView()对我进行更改,2)我如何在这里添加一个行为,允许我例如更新created_at和updated_at属性?好的,我在这篇文章中找到了应该如何更新created_at和Update_at using Behavior的方法: