2016-11-06 3 views
0

これは特に問題です。Laravelでの検証でエラーが発生した場合、Dropzoneの画像は失われます

私はdropzoneが含まれたフォームを作成し、画像はAJAX経由でアップロードされ、すべての点でその画像が保存されます(選択した画像が保存され、ボックスから削除できます)。

私はフォームを送信し、いくつかの検証エラーが発生します。しかし、私はちょうど未認証のデータで私のストレージを埋めるだけで、検証の前にアップロードされた画像は後でどのメソッドによってもアクセスまたは削除することができないので、その基本的な迷惑データです。

これを防ぐ方法はありますか?私は妥当性確認のエラー(または例えばリフレッシュ)後に既にアップロードされた画像を表示するのが大好きです。これに対する解決策がない場合は、私に別のアプローチを提案してください。

ありがとうございました。

+0

検証は画像のものですか?またはフォーム内にバンドルされている他のフィールド? – 2Fwebd

+0

その他のフィールド。画像のアップロード/削除のためのAJAXの呼び出しで画像の入力を検証します。私がdropzoneで画像をアップロードし、それが正常にアップロードされると、name = "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); 
    } 
} 

ます。また、バリデータを定義することができ、誰かがそれを必要とする場合ここで

は、完全なコードです私はそれを私のコントローラーで数回使用するので、私はちょうどそれのための別の方法を作った。エラーが発生したときにリダイレクトしたい場合は、その値を返す必要があります。

乾杯。