In this article, We will explain to you how to Implement Vue JS Flash Messages with Example in laravel 8(Laravel 8 Vue JS Flash Message Example Tutorial). so we will create a Vue JS flash-message using bootstrap without any package.
When the user performs any operation at that time we need the notification message, such as failure notification or success notification. We use Vue JS Flash Messages to show that. so you can follow the below step.
In this example, we will give you a simple example of Laravel 8 Vue JS Flash Message. so you can see the following steps.
Overview
Step 1: Install Laravel 8
Step 2: Setting Database Configuration
Step 3: Create Routes
Step 4: Create Controller
Step 5: Install Vue Js dependency
Step 6: Create Component and update app.js
Step 7: Update Blade Files
Step 8: Run Our Laravel Application
Step 1: Install Laravel 8
We are going to install laravel 8, so first open the command prompt or terminal and go to xampp htdocs folder directory using the command prompt. after then run the below command for laravel 8 install.
composer create-project --prefer-dist laravel/laravel laravel8_vue
Step 2: Setting Database Configuration
After the complete installation of laravel. we have to database configuration. now we will open the .env file and change the database name, username, password in the .env file. See below changes in a .env file.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=Enter_Your_Database_Name(laravel8_vue) DB_USERNAME=Enter_Your_Database_Username(root) DB_PASSWORD=Enter_Your_Database_Password(root)
Step 3: Create Routes
Add the following route code in the “routes/web.php” file.
use App\Http\Controllers\UserController; Route::get('/user', 'UserController@index')->name('user'); Route::post('/user', 'UserController@create');
Step 4: Create Controller
Here below command help to create the controller and model.
php artisan make:controller UserController
UserController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; use App\Models\User; use Illuminate\Support\Facades\Hash; class UserController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return view('welcome'); } public function create(Request $request) { $user = new User; $user->name = $request->name; $user->email = $request->email; $user->password = Hash::make($request->password); $user->save(); return response()->json([ 'message' => 'New User created' ]); } } ?>
Step 5: Install Vue Js dependency
in this step, go to the project directory using the command prompt. after then run the below command for Install Vue Js dependency.
php artisan preset vue npm install
Step 6: Create Component and update app.js
resources/js/components/UserComponent.vue
<template> <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Create new User</div> <div class="card-body"> <p id="success"></p> <form @submit.prevent="addUser"> <input type="text" name="name" v-model="name" /> <input type="email" name="email" v-model="email" /> <input type="password" name="password" v-model="password" /> <input type="submit" value="Submit"> </form> </div> </div> </div> </div> </div> </template> <script> export default { data(){ return { name: '', email: '', password: '' } }, methods: { addUser(){ axios.post('/user',{name: this.name, email:email,password:this.password}) .then((response)=>{ flash('User Created Successfully', 'success'); $('#success').html(response.data); }) } } } </script>
resources/js/components/FlashComponent.vue
<template> <div class="alert alert-success" role="alert" v-show="show"> {{ body }} </div> </template> <script> export default { props: ['message'], data() { return { show : false, body : '' } }, created() { if(this.message) { this.flash(this.message) } window.events.$on('flash',(message) => this.flash(message)) }, methods: { flash(message) { this.show = true this.body = message setTimeout(() => { this.hide() },3000) }, hide() { this.show = false } } } </script>
resources/js/app.js
require('./bootstrap'); window.Vue = require('vue'); window.events = new Vue(); window.flash = function(message) { window.events.$emit('flash',message); } Vue.component('user-component', require('./components/UserComponent.vue').default); Vue.component('flash', require('./components/FlashComponent.vue')); const app = new Vue({ el: '#app', });
Step 7: Update Blade Files
So finally, first we need to create the app.blade.php file in the “resources/views/layouts/” and Update the welcome.blade.php file in the “resources/views/” directory. so you can see the below code.
resources/views/layouts/app.blade.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="csrf-token" content="{{ csrf_token() }}"> <title>{{ config('app.name', 'Laravel') }}</title> <link href="{{ mix('css/app.css') }}" rel="stylesheet"> <title>User</title> </head> <body> <div id="app"> <div class="py-4"> @yield('content') </div> </div> <script src="{{ mix('js/app.js') }}" defer></script> </body> </html>
welcome.blade.php
@extends('layouts.app') @section('content') <user-component></user-component> @endsection
Step 8: Run Our Laravel Application
We can start the server and run this example using the below command.
npm run dev //or npm run watch
Now we will run our example using the below Url in the browser.
http://127.0.0.1:8000/user