[英]Laravel 5.1 redirect()->back() not working
我正在構建以下用於文件上傳的存儲庫。 我需要檢查文件大小,如果驗證失敗,請重定向回帶有錯誤的表單。 但是當checkSize失敗時,將不會發生重定向。 問題是什么?
<?php
namespace app\Repositories;
class UploadFileRepository
{
public $fileNames=[];
protected $maxSize=2097152;
public function upload($files){
foreach ($files as $file){
if(!empty($file)){
$filename=$file->getClientOriginalName();
$this->checkSize($file);
$this->fileNames[]=$filename;
$file->move(base_path().'/public/uploads/', $filename);
}
}
}
protected function checkSize($file){
$fileSize=$file->getClientSize();
// dd($fileSize);
$filename=$file->getClientOriginalName();
if ($fileSize == 0) {
return redirect()->back()->withInput()->withErrors([ $filename. ' is empty.']);
} elseif ($fileSize > $this->maxSize) {
return redirect()->back()->withInput()->withErrors([ $filename. ' is too large.']);
} else {
return true;
}
}
}
您需要在upload
函數(或路由所調用的任何函數)中返回響應。 在您的代碼中,如果出現錯誤, checkSize
將返回一個響應,但是upload
不會返回它,因此它只會丟失。
您可以執行以下操作:
class UploadFileRepository
{
public $fileNames=[];
protected $maxSize=2097152;
public function upload($files){
foreach ($files as $file){
if(!empty($file)){
$filename=$file->getClientOriginalName();
$error = '';
if (!$this->checkSize($file, $error))
return redirect()->back()->withInput()->withErrors([ $error ]);
$this->fileNames[]=$filename;
$file->move(base_path().'/public/uploads/', $filename);
}
}
}
protected function checkSize($file, &$error){
$fileSize=$file->getClientSize();
$filename=$file->getClientOriginalName();
if ($fileSize == 0) {
$error = $filename . ' is empty.';
return false;
} elseif ($fileSize > $this->maxSize) {
$error = $filename . ' is too large.';
return false;
} else
return true;
}
}
您可以嘗試:return back()-> with('error','Error message');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.