laravel 表单验证器的问题

在使用laravel做文章添加时。
验证器TopicRequest.php
publicfunctionrules(){
return[
//CREATEROLES
'title'=>'required',
'category_id'=>'required',
'body'=>'required',
'user_id'=>'required'
];
}
控制器TopicController.php
publicfunctionstore(TopicRequest$request,Topic$topic)
{
$topic->fill($request->all());
$topic->user_id=\Auth::id();
$topic->save();
returnredirect()->route('topics.show',$topic->id)->with('success','文章创建成功.');
}
user_id是根据登录用户的id产生的,并不想从前段页面表单中传隐藏域获得.这里有一个问题:文章新建每次都提示user_id不能为空.这里代码需要怎么修改了,尤其控制器TopicController?laravel的验证器运行机理是怎样的,这里是不是需要将user_id加入TopicRequest对象中,请高手赐教
题目描述
题目来源及自己的思路
相关代码
//请把代码文本粘贴到下方(请勿用图片代替代码)
你期待的结果是什么?实际看到的错误信息又是什么?
杨魅力
浏览 357回答 2
2回答

慕沐林林

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

心有法竹

Laravel先到验证器里验证,没问题了才进入控制器中。估计你提交表单的时候没有传入user_id字段,所以每次都会提示user_id不能为空。解决方法:验证器里不需要对user_id进行验证,Laravel将已登录用户的信息存在session里,使用\Auth::id()或\Auth::user()取用就行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript