成功または失敗のメッセージをユーザーに「フラッシュ」することが役立つケースのため、Livewireはデータをセッションに一時保存するLaravelのシステムをサポートしています。
一般的な使用法の例をご覧ください。
class UpdatePost extends Component
{
public Post $post;
protected $rules = [
'post.title' => 'required',
];
public function update()
{
$this->validate();
$this->post->save();
session()->flash('message', 'Post successfully updated.');
}
}
<form wire:submit.prevent="update">
<div>
@if (session()->has('message'))
<div class="alert alert-success">
{{ session('message') }}
</div>
@endif
</div>
Title: <input wire:model="post.title" type="text">
<button>Save</button>
</form>
これで、ユーザーが"保存"をクリックしてポストが更新されると、ページに"Post successfully updated"と表示されます。
リダイレクトのためにフラッシュデータを追加し、代わりにリダイレクト先ページでメッセージを表示したい場合でも、Livewireは賢く、もう一つ先のリクエストまでフラッシュデータを保持します。例をご覧ください。
public function update()
{
$this->validate();
$this->post->save();
session()->flash('message', 'Post successfully updated.');
return redirect()->to('/posts');
}
これでユーザーが投稿を「保存」すると、"/posts"エンドポイントにリダイレクトされ、そこでフラッシュメッセージが表示されます。これは、/posts
ページにフラッシュメッセージを表示するための適切なBladeスニペットがあることを前提としています。