2015-02-25 3 views
4

Я следую инструкциям * о том, как создать RESTful службы с Yii2 но методы поведения вызывает ошибку:Как использовать поведение при работе как RESTful?

Response content must not be an array.

Если удалить метод поведения, то я получаю ответ JSON, что я ожидал. Я попытался удалить метод поведения после прочтения другого сообщения **.

Однако я немного незнакомый с поведением. Можем ли мы использовать поведение с Yii2 с REST или это ошибка? Я был бы очень признателен, если бы кто-то мог пролить свет на это.

* 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

Можете ли вы разместить содержимое своего контроллера? Это может пролить свет на проблему. –

+0

Я не могу опубликовать контент, потому что он содержит символы, отличные от StackOverflow. Вы можете видеть это на Гитубе. Обратите внимание, что я переименовал behaviors(), чтобы заставить его работать. Переименуйте его, чтобы проверить. https://github.com/doublehops/yii2-learn/blob/master/app/frontend/controllers/UserController.php – Dubby

ответ

8

Ваша проблема заключается в том, что вы переопределить поведение() метод полностью. Родительские классы имеют приложенное поведение, которые согласовывают заголовки содержимого и формат ответа. Чтобы обойти это, ваше поведение должно вернуть массив, объединенный с родительским поведением. Таким образом, ваш метод behaviors() будет выглядеть следующим образом;

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

Вы должны помнить, чтобы добавить use yii\helpers\ArrayHelper в верхней части класса контроллера.

+0

Спасибо за это. Я сделал это изменение, но теперь я запутался в двух моментах: 1) Кажется, он не вызывает UserController-> actionView() для меня, чтобы внести изменения, и 2) Как добавить здесь поведение, которое позволит мне Например, обновить атрибуты created_at и updated_at? – Dubby

+0

ОК, я разработал, как я должен обновлять created_at и updated_at, используя поведение в этом сообщении: https://github.com/yiisoft/yii2/blob/master/docs/guide/concept-behaviors.md – Dubby