我正在使用Laravel 5.5。我正在尝试创建一个帖子,但是当我请求所有()数据从请求实例中转储时,我没有打印出所有字段。
以下是我创建帖子的代码:
/**
* Persist new post.
*/
public function store()
{
$this->validate(request(),[
'title'=>'required'
]);
dd(request()->all());
$path = CreatePhotoThumbnail(request()->file('photo'));
auth()->user()->addPost(new Posts( [
'title'=>request('title'),
'body'=>request('body'),
'photo'=> $path
]));
}
所有我进入print_R
只是标题:
Array ( [_token] => MhOTEGkR1oDMc50q0FiJmI8JCAeuCRrFCfRHcKkq [title] => test )
编辑:
表格:
<!-- Main (left side) -->
<section style="margin-top:20px;">
<div class="row">
<div class="col-sm-12">
<!-- post -->
<article class="blog-post">
<div class="post-entry">
<h2>Create a Blog Post</h2>
<p>Be as specific as u can:</p>
<form name="" action="/posts/create" method="post" class="comment-form" enctype="multipart/form-data">
{{csrf_field()}}
<div style="display: none;">
<input type="hidden" name="_wpcf7" value="79" />
<input type="hidden" name="_wpcf7_version" value="4.1" />
<input type="hidden" name="_wpcf7_locale" value="en_US" />
<input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f79-p64-o1" />
<input type="hidden" name="_wpnonce" value="ebcdc94d2e" />
</div>
<div class="row">
<div class="col-md-12">
<label for="title">Post Title</label>
<input id="title" type="text" placeholder="Post Title" name="title">
</div>
<div class="col-md-12">
<label for="body">Body:</label>
<textarea name="body" id="body" placeholder="Post body" rows="10"></textarea>
</div>
<div class="col-md-12" id="drop">
<label for="photo">Upload a post picture</label>
<input type="file" id="photo" name="photo" >
</div>
<div class="col-md-12"><input type="submit" value="Create Post" class="submit-button" /></div>
</div>
</form>
</div>
<div class="col-md-12" style="padding: 0px; margin:0px;">
@include('layouts.errors')
</div>
</article>
<!-- contact end -->
</div><!-- end col-md-12 -->
</div><!-- end row -->
</section>
<!-- END Main (left side) -->
答案 0 :(得分:5)
Laravel 5.5更改了validate()
方法以返回经过验证的字段,以便您可以轻松地将有效数据传递给模型创建,而不使用request->only()
。
有可能无意中修改了$request->all()
,因此您无法获得预期的结果。
如果您想获取所有内容,请尝试将字段添加到验证器,即使您不想验证它们,即没有实际规则。
例如
$validData = $this->validate(request(),[
'title'=>'required',
'body' => ''
]);
$ validData应包含您的字段。
您也可以尝试
$this->validate(request()->all() ...
然后可能不会修改请求对象,这意味着$request->all()
可能会按预期工作