【问题标题】:Laravel Custom Validation MethodLaravel 自定义验证方法
【发布时间】:2018-05-12 16:14:14
【问题描述】:

我正在尝试使用 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]);
}

【问题讨论】:

  • 您可以为此使用会话闪存消息

标签: php laravel validation laravel-5


【解决方案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 让您可以将错误消息放在幕后的会话中,然后转到您想要的页面,从会话中获取错误并在您的视图文件中很好地显示它们。

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 2017-10-29
    • 2014-10-02
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多