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