2017-11-29 18 views
0

私はLaravelを使ってPHPゲームを開発しようとしていますが、これまでのユーザーは金を持ち、ギルドのメンバーではなく、単純なフォームを使ってギルドを作成することができます。問題は、現在私がLaravelのdd()機能を使って、彼らが金を持っていなかったか、すでにギルドにいることを示すためです。Laravelカスタム検証方法

このように、私はこの動作をカスタムルール/バリデーターに入れることができるかどうかを見て、より焼き付いた感じを与える方法を探していましたが、これについてどうやって行くのかは分かりません。例が好まれるでしょう...ここに私の現在の関数があります。

public function store(Request $request) 
{ 
    $request->validate([ 
     'name' => 'required|min:4|alpha_dash|unique:guilds' 
    ]); 

    $char = Auth::user()->character; 
    $cost = config('game.create-guild-cost'); 
    $guild = new Guild; 

    if($char->gold < $cost) { 
     dd('Not enough money'); 
    } 

    if($char->guild != null) { 
     dd('You cannot already be in a guild.'); 
    } 

    $guild->name = request('name'); 
    $guild->leader_id = $char->id; 
    $guild->save(); 

    $char->gold = $char->gold - $cost; 
    $char->guild_id = $guild->id; 
    $char->save(); 

    return redirect()->route('guilds.show', ['guild' => $guild]); 
} 
+0

これにセッションフラッシュメッセージを使用できます –

答えて

1
public function store(Request $request) 
    { 
     $validator = Validator::make($request->all(), [ 
      'name' => 'required|min:4|alpha_dash|unique:guilds' 
     ]); 

     if ($validator->fails()) { 
      return redirect() 
         ->back() //please double check this but you got the idea 
         ->withErrors($validator) 
         ->withInput(); 
     } 

     // Do your stuff here.... 
    } 

だから、基本的にはLaravelは、シーンの背後にあるセッションであなたのエラーメッセージを入れ、その後、セッションからのエラーを取得し、ビューファイルでうまくそれらを表示ご希望のページに移動するために用意されています。

関連する問題