laravel, используя withErrors в try catch - PullRequest
0 голосов
/ 07 июня 2018

Так что я делаю этот сайт, где вы можете купить игровые приставки, поэтому я сделал круд, но я хотел, чтобы было невозможно вставить дубликаты в базу данных, но когда я создаю дубликат, вы получаете ошибку 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')) ничего не показывает.что я делаю не так.

РЕДАКТИРОВАТЬ

create.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>

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Вы можете просто использовать with(), чтобы отправить сообщение представлению, например

 return Redirect::to('console/create')
            ->withInput()
            ->with('message', 'duplicate');

, и получить к нему доступ как

@if ($message = Session::get('message'))
  {{$message}}
@endif
.
0 голосов
/ 07 июня 2018

Когда вы устанавливаете withErrors, вам не нужно передавать массив, просто напишите сообщение об ошибке, подобное этому ->withErrors('Duplicate');

В представлении не забудьте включить проверку, если есть ошибки

@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
...