在所有页面上显示文字

时间:2019-01-31 07:39:54

标签: php laravel

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 }}

我想要我的代码执行的是在所有页面上显示我的消息。到目前为止,它仅显示在一页上,即“ /”,因此只有主页有效。

我尝试用'*'代替,但这不起作用。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

通过这种方式,消息变量将可用于控制器的所有方法。

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);


    }
}

答案 1 :(得分:1)

或者您可以创建一个刀片视图来显示此消息并将其包含在需要的地方:

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

现在在任何其他视图中,只需使用:@include('message')

相关问题