Задать вопрос
@mizgirek

Как в Yii2 получить данные отправленные методом PUT?

Здравствуйте!
Начал изучать Yii2, а точнее раздел REST.
Настроил все, как в документации и почти все работает, кроме запросов отправленных методом PUT.
В документации написано что метод PUT должен обновлять данные, но этого не происходит.
Попробовал получить данные через \Yii::$app->request->getBodyParams() но возвращается пустой массив. Хотя если проверить переменную $_REQUEST в ней как положено все отправленные мною данные есть. Ради тестирования в методе beforeValidate() прописал следующее:
$this->count = $_REQUEST['count '];
$this->summ = $_REQUEST['summ'];

И данные начали обновляться, т.е. то что я отправляю через метод PUT стало работать, но ведь это же не правильно, это опасно и тупо, подскажите пожалуйста что я делаю не так

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            //'enableStrictParsing' => true,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'api'],
            ],
        ],


class ApiController extends ActiveController
{
    public $modelClass = 'app\models\Orders';

    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['corsFilter' ] = [
            'class' => \yii\filters\Cors::className(),
        ];

        $behaviors['contentNegotiator'] = [
            'class' => \yii\filters\ContentNegotiator::className(),
            'formats' => [
                'application/json' => \yii\web\Response::FORMAT_JSON,
            ],
        ];

        $behaviors['authenticator'] = [
            'class' => HttpBearerAuth::className(),
            /*'authMethods' => [
                HttpBasicAuth::className(),
                HttpBearerAuth::className(),
                QueryParamAuth::className(),
            ],*/
        ];
        
        return $behaviors;
    }

}
  • Вопрос задан
  • 1551 просмотр
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Вот вебинар, в нём всё рассказано.
И пример из этого вебинара, настройка urlManager
'rules' => [
                '' => 'site/index',
                'auth' => 'site/login',
                'POST signup' => 'site/signup',

                'GET profile' => 'profile/index',
                'PUT,PATCH profile' => 'profile/update',

                ['class' => 'yii\rest\UrlRule', 'controller' => 'post'],
            ],

Все примеры вебинара.

P.S. Желательно, чтобы Вы дополнили свой вопрос более подробным кодом, начиная от конфигурации и заканчивая действиями в контроллере.
Кстати, в phpstorm есть инструмент для тестирования restfull
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы