laravel 表单验证器的问题
在使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我觉得Model中Topic.php中的$fillable是不是把user_id写进去了,去掉就好了
执行流程 : 访问网页 > TopicRequest > store ,所以说在 TopicRequest 的时候当然你获取不到相关的user_id啊,你注意
Laravel 先到验证器里验证,没问题了才进入控制器中。估计你提交表单的时候没有传入
user_id
字段,所以每次都会提示user_id
不能为空。解决方法:
验证器里不需要对
user_id
进行验证,Laravel 将已登录用户的信息存在 session 里,使用\Auth::id()
或\Auth::user()
取用就行。