Как получить JSON из одного параметра запроса в Laravel - PullRequest
0 голосов
/ 18 марта 2020

Я хочу отправить JSON в одно из полей запроса API, например:

Расшифровано:

https://api.some.com/foo/bar?a=788&b=My Name&c=[{"name":"pejman"},{"Some":"thing"}]

Я хочу получить параметр c, используя $request->c но я хочу получить его как декодированный JSON автоматически в моем контроллере.

Это мой PHP код

MyRequest. php :

<?php

use InfyOm\Generator\Request\APIRequest;

class MyRequest extends APIRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'a' => 'required',
            'b' => 'required',
            'c' => 'requried',
        ];
    }
}

SomeController. php:

<?php

class SomeController extends Controller
{

    public function store(MyRequest $request)
    {
        $c = $request->c;
        $c = $request->json('c');
        $c = $request->json()->all();
    }

}

? Я хочу, чтобы $c был декодирован JSON автоматически в моем контроллере, как я могу это сделать? Возможно ли это событие сделать с помощью MyReqest и как?

1 Ответ

3 голосов
/ 18 марта 2020

Вы можете манипулировать данными запроса, используя метод prepareForValidation(), расположенный в Illuminate\Validation\ValidatesWhenResolvedTrait. Итак, реализуйте этот метод в вашем MyRequest классе:

protected function prepareForValidation()
{
    $this->merge([
        'c' => json_decode($this->c),
    ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...