拉拉维尔闪存消息验证



我正在创建一个书籍的 CRUD,我想做的就像生成的auth文件一样,如果有人注册并且没有在文本框中输入任何文件,就会返回一条闪存消息。我现在正在我的粗制滥造中这样做,但我只能在成功创建一本书时发出闪光消息。这是我的商店功能

public function store(Request $request)
{
    $this->validate($request, [
        'isbn' => 'required|',
        'title' => 'required',
        'author' => 'required',
        'publisher' => 'required'
    ]);
    Session::flash('msg', 'Book added!');
    $books = $request->all();
    Book::create($books);
    return redirect('books');
}

在我的家里.php

@if(Session::has('msg'))
<div class="alert alert-success">
 {{ Session::get('msg') }}
 </div>
 @endif

这实际上有效,但我想在有人没有完成字段时显示一些现成生成的错误闪光。我该怎么做?

这很简单,首先有一个甜蜜的好功能,那就是redirect()->with()

因此,您的控制器代码可能是:

public function store(Request $request)
{
    $this->validate($request, [
        'isbn' => 'required|',
        'title' => 'required',
        'author' => 'required',
        'publisher' => 'required'
    ]);
    if(Book::create($books)){
      $message = [
        'flashType'    => 'success',
        'flashMessage' => 'Book added!'
      ];
    }else{
      $message = [
        'flashType'    => 'danger',
        'flashMessage' => 'Oh snap! something went wrong'
      ];
    }
    return redirect()->action('BooksController@index')->with($message);
}

然后,根据您的观点:

@if (Session::has('flashMessage'))
  <div class="alert {{ Session::has('flashType') ? 'alert-'.session('flashType') : '' }}">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    {{ session('flashMessage') }}
  </div>
@endif

奖励你可以把它放在你的页脚上,所以警报框将在 3 秒后消失:

<script>
  $('div.alert').delay(3000).slideUp(300);
</script>

您可能会获得字段的单个错误

{!! $errors->first('isbn'); !!}

或者你可以得到所有错误

@foreach ($errors->all() as $error)
     <div>{{ $error }}</div>
@endforeach

你可以像这样使用尝试捕获

try{
$books = $request->all();
Book::create($books);
Session::flash('msg', 'Book added!');
}
catch(Exception $e){
Session::flash('msg', $e->getmessage());
}

最新更新