laravel 表单验证器的问题

发布于 2022-09-11 19:03:22 字数 982 浏览 30 评论 0

在使用laravel 做文章添加时。

验证器 TopicRequest.php

public function rules(){
  return [
        // CREATE ROLES
        'title'=>'required',
        'category_id'=>'required',
        'body'=>'required',
        'user_id'=>'required'
    ];
 }

控制器TopicController.php

    public function store(TopicRequest $request,Topic $topic)
    {
        $topic->fill($request->all());
        $topic->user_id=\Auth::id();
        $topic->save();
        return redirect()->route('topics.show', $topic->id)->with('success', '文章创建成功.');
    }
user_id 是根据登录用户的id产生的,并不想从前段页面表单中传隐藏域获得.
这里有一个问题:
文章新建每次都提示user_id不能为空.
这里代码需要怎么修改了,尤其控制器TopicController?
laravel 的验证器运行机理是怎样的,这里是不是需要将user_id 加入TopicRequest对象中,请高手赐教

题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏见 2022-09-18 19:03:22

我觉得Model中Topic.php中的$fillable是不是把user_id写进去了,去掉就好了

墟烟 2022-09-18 19:03:22

执行流程 : 访问网页 > TopicRequest > store ,所以说在 TopicRequest 的时候当然你获取不到相关的user_id啊,你注意

忘你却要生生世世 2022-09-18 19:03:22

Laravel 先到验证器里验证,没问题了才进入控制器中。估计你提交表单的时候没有传入 user_id 字段,所以每次都会提示 user_id 不能为空。

解决方法:
验证器里不需要对 user_id 进行验证,Laravel 将已登录用户的信息存在 session 里,使用 \Auth::id()\Auth::user() 取用就行。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文