laravel 在 try catch 中使用 withErrors

标签 laravel try-catch

所以我正在制作这个网站,您可以在其中购买游戏机,所以我制作了一个临时文件,但我希望不可能在数据库中插入重复项,但是当我创建重复项时,您会收到 laravel 错误,并且对用户不友好。所以我想显示一条正常的消息,说你复制了。所以我做了这个。

public function store(Request  $request)
{
    try
    {
        $consoles = new consoles();
        $consoles->naam = input::get('naam');
        $consoles->releasedate = input::get('releasedate');
        $consoles->company = input::get('company');
        $consoles->price = input::get('price');
        $consoles->created_at = null;
        $consoles->updated_at = null;
        $consoles->save();
    }catch (\Exception $e)
    {
        return Redirect::to('console/create')
            ->withInput()
            ->withErrors(array('message' => 'duplicate'));

    }

    return redirect('consoles');
}

问题是 ->withErrors(array('message' => 'duplicate')) 没有显示任何内容。我做错了什么。

编辑

创建.blade.php

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
    $( function() {
        $( "#datepicker" ).datepicker({ dateFormat: 'yy-mm-dd' }).val();
    } );
</script>
</head>
<body>
<div class="container">
<div class="row">
    <div class="col-md-10 col-md-offset-1">
        <div class="panel panel-default">
            <div class="panel-heading"> creating data</div>
            <form method="POST" action="{{url('games/store/')}}">
                naam: <br>
                <input type="text" name="naam" required>*required<br>
                releasedate: <br>
                <input type="text" name="releasedate" id="datepicker" required>*required<br>
                company: <br>
                <input type="text" name="company" required>*required<br>
                price: <br>
                <input type="number" name="price" min="0" value="0" step=".01" required>*required<br>
                <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />
                <input type="submit" name="create" value="create">
            </form>
        </div>
    </div>
</div>
</div>
</body>
</html>

最佳答案

当你设置withErrors时,你不需要传递数组,只需编写像这样的错误消息->withErrors('Duplicate');

在 View 中记得检查是否有错误

@if ($errors->count())
 <div class="col-md-12">
  <div class="alert alert-danger text-center">
   @foreach ($errors->all() as $error)
     <p>{{$error}}</p>
   @endforeach
  </div>
 </div>
@endif

关于laravel 在 try catch 中使用 withErrors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50741117/

相关文章:

Laravel spatie QueryBuilder GET 请求搜索

python - FileNotFoundError "try .. except IOError"未捕获时如何处理?

c# - 异常后如何继续执行?

javascript - 在 javascript 中使用和捕获 RangeError

Laravel 5 无限滚动 + 分页

php - 我该如何回应这个?

laravel - Nginx上的Laravel对除索引外的所有路由都说404

c++ - 如果抛出的值匹配多个 catch 子句会发生什么?

swift - Swift 3.1 中没有空或通配符的详尽 catch block

php - 如何为laravel中的每个用户生成唯一的随机值并将其添加到数据库