首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel:通过请求验证更新数据并不是在更新数据

Laravel:通过请求验证更新数据并不是在更新数据
EN

Stack Overflow用户
提问于 2019-11-07 10:50:34
回答 3查看 1.5K关注 0票数 1

我正在更新API端点中的数据。因为,我使用表单请求验证来保持验证与控制器的分离。

这可以很好地处理Store请求。

但是,当我尝试更新下面提到的单个数据时,响应返回以下响应数据。

因为,数据已经存储在数据库中了。当我发送更新数据的请求时..它应该返回更新后的数据。但是,它不会返回。

需要帮助才能解决这个问题。

Body中的JSON数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "title": "Question Changed 2"
}

当前响应:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "question_type": [
    "Question Type is Required!"
  ],
  "question": [
    "Question is Required!"
  ],
  "is_required": [
    "Is Require Value is Required"
  ]
}

QuestionRequest:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function rules()
    {
        return [
            'question_type' => 'required | min:3 | max:10',
            'title' => 'required | min:5 | max:100',
            'question' => 'required | min:5 | max:255',
            'description' => 'min:10 | max:255',
            'is_required' => 'required',
        ];
    }

更新:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function update(QuestionRequest $request, Question $question)
    {
        $question = $question->update($request->all());

        return response()->json($question, 200);
    }
EN

回答 3

Stack Overflow用户

发布于 2019-11-07 10:56:24

您需要使用Docs中提到的有时验证规则

在某些情况下,您可能希望仅当字段出现在输入数组中时才对该字段运行验证检查。要快速完成此操作,请将有时规则添加到您的规则列表中

您可以将rules数组更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        return [
            'question_type' => 'sometimes|required | min:3 | max:10',
            'title' => 'sometimes|required | min:5 | max:100',
            'question' => 'sometimes|required | min:5 | max:255',
            'description' => 'sometimes|min:10 | max:255',
            'is_required' => 'sometimes|required',
        ];

这样,只有在请求中存在这些字段时,才会运行对这些字段的验证。

票数 1
EN

Stack Overflow用户

发布于 2019-11-07 12:04:46

如果有人需要解决方案,我正在更新答案:

我简单地将条件逻辑放在请求验证规则中,如下所示。根据@ascsoftw增加了,有时会根据@ascsoftw更新数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function rules()
    {
        switch($this->method())
        {
            case 'POST':
                {
                    return [
                        'question_type' => 'required | min:3 | max:10',
                        'title' => 'required | min:5 | max:100',
                        'question' => 'required | min:5 | max:255',
                        'description' => 'min:10 | max:255',
                        'is_required' => 'required',
                    ];
                }
                break;

            case 'PUT':
                {
                    return [
                        'question_type' => 'sometimes | required | min:3 | max:10',
                        'title' => 'sometimes | required | min:5 | max:100',
                        'question' => 'sometimes | required | min:5 | max:255',
                        'description' => 'sometimes | min:10 | max:255',
                        'is_required' => 'sometimes | required',
                    ];
                }
                break;

            default:
                break;
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2021-11-21 13:39:02

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
`return [
        'question_type' => 'sometimes|required | min:3 | max:10',
        'title' => 'sometimes|required | min:5 | max:100',
        'question' => 'sometimes|required | min:5 | max:255',
        'description' => 'sometimes|min:10 | max:255',
        'is_required' => 'sometimes|required',
    ];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58747140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文