Nazar Abubaker
Nazar Abubaker

Reputation: 505

Show text on all pages

UserController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Contracts\View\View;

class UserController extends Controller
{
    // Changes depending on the time of day.
    public function boot() {

        if(date('H:i') > '00:00' && date('H:i') < '12:00'):
            $message = "Good Morning, ";
        elseif(date('H:i') > '12:00' && date('H:i') < '17:00'):
            $message = "Good Afternoon, ";
        else:
            $message = "Good Evening, ";
        endif;

        // THIS NEEDS TO SHOW ON ALL PAGES
        return view('/', ['message' => $message]);
    }
}

layout.blade.php

{{ $message }}

What I want my code to do is to show my message on all pages. So far, it only shows on one page, which is '/' so just the homepage works.

I've tried replaced '*' but that doesn't work.

Any help would be appreciated!

Upvotes: 0

Views: 46

Answers (2)

Jerodev
Jerodev

Reputation: 33186

Or you could create a blade view that shows this message and include it where ever needed:

message.blade.php

@if(date('H:i') > '00:00' && date('H:i') < '12:00')
    Good Morning
@elseif(date('H:i') > '12:00' && date('H:i') < '17:00')
    Good Afternoon
@else
    Good Evening
@endif

And now in any other view, just use: @include('message')

Upvotes: 1

Md.Sukel Ali
Md.Sukel Ali

Reputation: 3065

In this way the message variable will be available to your controller's every methods.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Contracts\View\View;

class UserController extends Controller
{

    public function __construct()
    {

        if(date('H:i') > '00:00' && date('H:i') < '12:00'):
            $message = "Good Morning, ";
        elseif(date('H:i') > '12:00' && date('H:i') < '17:00'):
            $message = "Good Afternoon, ";
        else:
            $message = "Good Evening, ";
        endif;

        View::share('message', $message);


    }
}

Upvotes: 1

Related Questions