【问题标题】:How to get JSON from one parameter of request in Laravel如何从 Laravel 中的一个请求参数中获取 JSON
【发布时间】:2020-03-18 17:03:38
【问题描述】:

我想将字符串化的 JSON 发送到 API 请求的字段之一,如下所示:

解码:

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

我想使用$request->c 获取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 执行此操作以及如何操作?

【问题讨论】:

  • 向您的MyRequest 添加一个公共方法,以解码c

标签: php laravel infyom


【解决方案1】:

您可以使用位于Illuminate\Validation\ValidatesWhenResolvedTrait 中的prepareForValidation() 方法来操作请求数据。所以,在你的 MyRequest 类中实现这个方法:

protected function prepareForValidation()
{
    $this->merge([
        'c' => json_decode($this->c),
    ]);
}

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 2015-11-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2014-06-27
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多