Laravel自定义验证方法

时间:2017-11-29 03:26:40

标签: php laravel validation laravel-5

我正在尝试使用Laravel开发PHP游戏,到目前为止,一个用户 - 拥有足够的黄金而不是公会的一部分 - 可以使用带有一个文本字段的简单表单创建一个公会。问题是目前我正在使用Laravel的dd()功能,以表明他们没有获得金币或者已经在公会中。

因此,我一直在寻找一种方法,通过查看我是否可以将此行为放入自定义规则/验证器中来为其提供更好的感觉,但我不确定如何解决此问题。例子是首选......这是我目前的职能。

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

1 个答案:

答案 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会让你把错误消息放在场景后面的会话中,然后转到你想要的页面,从会话中获取错误并在你的视图文件中很好地显示它们。