【问题标题】:Laravel @include controller dataLaravel @include 控制器数据
【发布时间】:2019-09-19 15:43:45
【问题描述】:

我正在尝试在刀片模板中包含的边栏上接收数据,但我没有收到任何数据。我尝试添加@include('admin.sidebar',['message_counter' => $message_counter]),并在侧边栏视图中显示为{{$message_counter}}。我收到了Undefined variable: message_counter

我的路由器:

Route::get('/admin/sidebar', [
        'uses' => 'MessagesController@counter',
        'as' => 'admin.sidebar'

    ]);

我的控制器

use App\Message;

public function counter()
    {
        $message_counter = Message::where('status', 0)->get();
        return view('admin.sidebar')->with('message_counter', $message_counter);
    }

我的观点

<span class="menu-collapsed">Messages <span class="badge badge-pill badge-primary ml-2"> {{$message_counter}} </span></span>

我最终打算做的是在管理员后端的侧边栏中显示未读消息的数量,即每个页面中的@include

这可能是因为我每次进入管理后端的任何页面时都会访问两个不同的控制器。

我已经查看了Including Sub-Views,但我可能遗漏了一些愚蠢的东西或不理解一些关键概念,感谢您的帮助!

谢谢!

【问题讨论】:

    标签: laravel eloquent orm include


    【解决方案1】:

    注意:我认为这是不方便且不推荐的。这只是回答问题,您可以向下滚动查看其他答案或方法。

    控制器

    public function counter()
    {
        $message_counter = Message::where('status', 0)->get();
        return view('admin.sidebar');
    }
    

    查看

    @php 
        $message_counter = App\Message::where('status', 0)->get();
    @endphp
    
    Messages <span class="badge badge-pill badge-primary ml-2"> {{$message_counter}} </span></span>
    

    【讨论】:

    • 感谢您的回复。尝试使用紧凑型,但我仍然在侧边栏中获得Undefined variable: message_counterresources\views\admin\sidebar.blade.php 中的{{$message_counter}}
    • 好吧,这行得通,但就像你说的,这不是“漂亮”,如果可能的话,我宁愿这样做“正确的方式”!但我们很接近了!
    • @DavidCova 很高兴它可以工作,如果没有工作,你现在有第二个选择。尝试等待其他人的答案:)
    【解决方案2】:

    你可以这样试试 在路线中:

    Route::get('/admin/sidebar', 'MessagesController@counter');
    

    在控制器中

    use App\Message;
    
    public function counter()
    {
      $message_counter = Message::where('status', 0)->get();
      return view('admin.sidebar', compact('message_counter));
    }
    

    你的观点没问题..试试这个,如果它不起作用,请告诉我....

    【讨论】:

      【解决方案3】:

      使用 View Composer:将其添加到 App\Providers\AppServiceProvider@boot()

      View::composer('admin.sidebar', function ($view) {
                  $message_counter = Message::where('status', 0)->get();
                  $view->with([''message_counter' => $message_counter]);
              });
      

      【讨论】:

      • 感谢您的回复。我仍然在边栏中收到Undefined variable: message_counter{{$message_counter}}
      • @DavidCova 请添加您的资源/views/admin/sidebar.blade.php
      • &lt;span class="menu-collapsed"&gt;Messages &lt;span class="badge badge-pill badge-primary ml-2"&gt; {{$message_counter}} &lt;/span&gt;&lt;/span&gt;
      • @DavidCova 并且您的视图缓存是否清晰? php artisan cache:clear
      • @DavidCova 当您尝试时会发生什么? ->with(['message_counter' => 'foo'])
      猜你喜欢
      • 1970-01-01
      • 2020-07-29
      • 2018-04-06
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      相关资源
      最近更新 更多