我正在创建一个书籍的 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">×</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());
}