【问题标题】:How can I use variables globally in Blade templates如何在 Blade 模板中全局使用变量
【发布时间】:2019-05-25 12:25:00
【问题描述】:

我想在我的布局中使用$unreadMessages,但我不知道哪个控制器全局用于布局。 它在dashboardController,但我收到此错误:

未定义变量:unreadMessages(查看: /myhost/resources/views/layouts/app.blade.php)(查看:/ myhost/resources/views/layouts/app.blade.php)

我可以在哪个控制器中定义这个变量以便全局使用它?

此代码用于$unreadMessages 中的dashboardController

<?php

class DashboardController extends Controller
{

    public function index()
    {
        \Artisan::call('status:check');
        $unreadMessages = TicketMessage::where(['is_read' => 0])->whereIn('ticket_id', $ticketIds)->whereNotIn('user_id', [Auth::user()->id])->count();


        return view('dashboard', compact(
            'unreadMessages'
        ));
    }
}

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

在您的dashboard.blade.php 中,可能有对@include('layouts/app') 或类似内容的引用。如果没有,请搜索您的代码以获取类似的参考。

您需要将$unreadMessages 传递给该子视图。您将其传递到主刀片 (dashboard.blade.php),但不是仪表板中包含的刀片 (app.blade.php)。

所以,你需要这样的东西:

@include('layouts/app', array('unreadMessages' => $unreadMessages))

这里有几篇文章可能会有所帮助:

【讨论】:

    【解决方案2】:

    您可以在启动功能中使用 ServiceProvider 执行此操作,例如:

     public function boot() {
        ...
    
        view()->composer(['layouts.app'],function($view) {
            $unreadMessages = TicketMessage::where(['is_read' => 0])->whereIn('ticket_id', $ticketIds)->whereNotIn('user_id', [Auth::user()->id])->count();
            $view->with('unreadMessages',$unreadMessages)
        });
     }
    

    【讨论】:

    • 在AuthServiceProvider(App\Providers\AuthServiceProvider)中
    • 试试 view()->composer('*',function($view) {})
    【解决方案3】:

    您可以通过在Route.php 文件中使用以下代码来解决此问题:

    view()->share('unreadMessages', $unreadMessages);
    

    【讨论】:

    • 我的脚本没有 Route.php 文件
    • 我资助RouteServiceProvider.php,是你的意思吗?
    • 您可以在旧版本 laravel 的 \app\Http 文件夹中找到 route.php。新版本没有类似 route.php 的文件。为此,它们存在一个名为 routers 的文件夹,并包含名为 api.php、console.php 和 web.php 的文件。将代码放在web.php中
    • 关于路由的更多信息可以参考laravel.com/docs/5.3/routing#basic-routing
    猜你喜欢
    • 2014-05-06
    • 2016-12-20
    • 2014-08-27
    • 2018-01-30
    • 2013-04-13
    • 2015-06-25
    • 2020-05-10
    相关资源
    最近更新 更多