30 Mar 2022

Laravel 8 Create Custom Helper Functions (Global Function)

This article helps you to create a custom helper function in Laravel. You may have noticed some functions in Larave do not need to import the classes, and it’s not attached with any class name, such as optional(), route() etc. These are so called helper functions.


Step 1 Create helpers.php File

In this step, you need to create app/Helpers/helpers.php in your laravel project and put the following code in that file:

app/Helpers/helpers.php

<?php
use Carbon\Carbon;

if (! function_exists('convertLocalToUTC')) {
    function convertLocalToUTC($time)
    {
        return Carbon::createFromFormat('Y-m-d H:i:s', $time, 'Europe/Paris')->setTimezone('UTC');
    }
}

if (! function_exists('convertUTCToLocal')) {
    function convertUTCToLocal($time)
    {
        return Carbon::createFromFormat('Y-m-d H:i:s', $time, 'UTC')->setTimezone('Europe/Paris');
    }
}

Step 2 Add new file path in composer.json file

We have to inform the system that we have added a new file to run everywhere in Laravel, so add the "files": ["app/Helpers/helpers.php"] to composer.json in the autoload block.

composer.json

..........
"autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        },
        "files": ["app/Helpers/helpers.php"]
    },
.........

 


Step 3: Run the composer autoload command

To take this changes in effect, just the below command from the root directory.

composer dump-autoload

You are alomost done with the configuration. To test this, create a new route in the routes/web.php and add the below code in there.

Route::get('newhelper', function(){
    $timeInEuropeParisTimezone = '2021-03-25 11:00:00';
    $timeInUTC = convertLocalToUTC($timeInEuropeParisTimezone);
  
    dd($timeInUTC);
});

Access your newly created route in browser, you will see this function called properly.

Even you can use this function in Blade Template:

{{convertLocalToUTC('2021-03-25 11:00:00')}}

That’s it for today, hope you had enjoyed the article.

29 Mar 2022

Laravel 8 Flash Message Tutorial Example


 Step 1: Create Global File For Flash Message

In first step we will create new blade file flash-message.blade.php. In this file we will write code of bootstrap alert and check which messages come.

There are following alert will added:

1)success

2)error

3)warning

4)info

5)validation error

So, let's create flash-message.blade.php file and put bellow code on that file.

resources/views/flash-message.blade.php

@if ($message = Session::get('success'))

<div class="alert alert-success alert-block">

<button type="button" class="close" data-dismiss="alert">×</button>

<strong>{{ $message }}</strong>

</div>

@endif

@if ($message = Session::get('error'))

<div class="alert alert-danger alert-block">

<button type="button" class="close" data-dismiss="alert">×</button>

<strong>{{ $message }}</strong>

</div>

@endif

@if ($message = Session::get('warning'))

<div class="alert alert-warning alert-block">

<button type="button" class="close" data-dismiss="alert">×</button>

<strong>{{ $message }}</strong>

</div>

@endif

@if ($message = Session::get('info'))

<div class="alert alert-info alert-block">

<button type="button" class="close" data-dismiss="alert">×</button>

<strong>{{ $message }}</strong>

</div>

@endif

@if ($errors->any())

<div class="alert alert-danger">

<button type="button" class="close" data-dismiss="alert">×</button>

Please check the form below for errors

</div>

@endif


Step 2: Use Flash Message in Theme

In this step we have to just include flash-message.blade.php file in your theme default file. You have to just include this flash file in your default theme blade file like as bellow:

@include('flash-message')

You can also see i added flash file on my theme, so you can add that way. Let's see bellow example:

resources/views/layouts/app.blade.php

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- Styles -->

<link href="/css/app.css" rel="stylesheet">

</head>

<body>


<div id="app">

@include('flash-message')


@yield('content')

</div>


<!-- Scripts -->

<script src="/js/app.js"></script>

</body>

</html>



Step 3: Use Flash Messages with Redirect

In this step we will learn how to give message when you redirect one by one:

1. Redirect with success message

We can simple redirect route or redirect url or redirect back with success flash message, we can use in controller like this way:

public function create(Request $request)

{

$this->validate($request,[

'title' => 'required',

'details' => 'required'

]);


$items = Item::create($request->all());


return back()->with('success','Item created successfully!');

}

You can get layout of success flash message:

2. Redirect with error message

We can simple redirect route or redirect url or redirect back with error flash message, we can use in controller like this way:

public function create(Request $request)

{

return redirect()->route('home')

->with('error','You have no permission for this page!');

}

You can get layout of error flash message:

3. Redirect with warning message

We can simple redirect route or redirect url or redirect back with warning flash message, we can use in controller like this way:

public function create(Request $request)

{

return redirect()->route('home')

->with('warning',"Don't Open this link");

}

You can get layout of warning flash message:


4. Redirect with info message

We can simple redirect route or redirect url or redirect back with info flash message, we can use in controller like this way:

public function create(Request $request)

{

$this->validate($request,[

'title' => 'required',

'details' => 'required'

]);


$items = Item::create($request->all());


return back()->with('info','You added new items, follow next step!');

}

You can get layout of info flash message:


5. Validation Error

If you use laravel 5 validation then you will redirect back with errors automatically, At that time it will also generate error flash message.



public function create(Request $request)

{

$this->validate($request,[

'title' => 'required',

'details' => 'required'

]);


.....

}

You can get layout of error flash message:


This way you can simple implement flash message in your laravel 8 application.