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