所以,我有这个特殊的问题。
我已经制作了一个包含dropzone的表单,并且图像是通过AJAX上传的,一切都在这个角度工作(选择的图像存储,可以从框中删除)。
所以问题如下: 当我提交表单,并且发生了一些验证错误时,我上传的图像已经在服务器上,但是不显示在dropzone表单上,我必须重新上载它们,但是我只是用未填充的数据填充我的存储空间,并且在验证之前上传的图像以后的任何方法都无法访问或删除,因此它基本上是垃圾数据。
有没有办法防止这种情况发生?我想在验证错误(或刷新)之后显示已上传的图像。如果不能解决这个问题,建议我采用不同的方法。
感谢。
答案 0 :(得分:0)
我设法找到了一个有效的解决方案。 我的想法是:如果有图像发布,那么使用$ validator-> failed()方法我将从服务器中删除图像。
以下是完整的代码,如果有人需要它:
// Validating the request
public function validate(Request $request){
$rules = []; //define your rules
$messages = []; //define your rules
// We make new validator with request data, rules and messages
$validator = Validator::make($request->all(), $rules, $messages);
// Deleting images if the validator fails
if($validator->fails()){
if(isset($request->images)){
foreach($request->images as $image){
// unlink your image here
}
}
return Redirect::back()->withInput()->withErrors($validator);
}
}
然后在方法store / edit(或自定义方法)中调用:
public function store(Request $request){
// If it fails, return the redirect we defined.
if($this->validate($request)){
return $this->validate($request);
}
}
您也可以直接在store方法中定义验证器,但由于我在Controller中使用了几次,因此我为它做了一个单独的方法。如果我们想重新定位错误,我们必须返回它的值。
干杯。