2016-11-06 46 views
0

所以,我有這個特殊問題。從Dropzone的圖像失敗後驗證與Laravel錯誤

我已經作出了形式與包括懸浮窗,並且圖像被經由AJAX上傳,一切都從這一觀點出發工作(選擇的圖像被存儲,並且可以從箱被刪除)。

所以問題如下: 當我提交表單,併發生一些驗證錯誤時,我上傳的圖像已經在服務器上,但不顯示在dropzone表單上,我不得不重新上傳它們,但之後我只是用未裝入的數據填充我的存儲空間,並且稍後在驗證之前上傳的圖像無法通過任何方法訪問或刪除,因此其基本上是垃圾數據。

有什麼辦法來防止這種情況的發生?我很樂意在驗證錯誤後顯示已上傳的圖像(例如刷新)。如果無法解決這個問題,建議我採用不同的方法。

感謝。

+0

驗證是爲圖像?或表單中的其他字段綁定? – 2Fwebd

+0

其他領域。我使用AJAX驗證圖像輸入,我呼籲上傳/刪除圖像。當我在dropzone中上傳圖片併成功上傳時,會生成一個輸入標籤,名稱=「images []」,然後我處理控制器中的圖像並將它們存儲在數據庫中。 (從dropzone中刪除圖像時刪除輸入標籤) –

回答

0

我得到了一個有效的解決方案。 我的想法如下:如果有張貼的圖像,然後使用$ validator-> fails()方法,我從服務器上刪除圖像。

下面是完整的代碼,如果有人需要它:

// 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); 
    } 
} 

則在該方法存儲/編輯(或自定義方法)只要致電:

public function store(Request $request){ 

    // If it fails, return the redirect we defined. 
    if($this->validate($request)){ 
     return $this->validate($request); 
    } 
} 

您也可以定義驗證直接在商店方法中,但由於我在我的控制器中使用它幾次,我爲它做了一個單獨的方法。如果我們想重定向錯誤,我們必須返回它的值。

乾杯。