使用Laravel 5.6在包含的视图中传递数据

时间:2018-06-14 12:32:57

标签: php laravel

使用Laravel 5.6,我试图获取登录用户在我的应用程序中可能拥有的已接收链接数。

public function getReceivedLinksCount() {
    return $count = App\Link::where([
                ['recipient_id', Auth::id()],
                ['sender_id', '!=', Auth::id()]
            ])->count();
}

到目前为止,这么好。问题不是关于那段代码,而是 我可以使用它。我想在网站的导航栏上显示这个计数器(Facebook的风格),这是我header.blade.php中每个页面中包含的<section class="main-content-section home"> <section class="hero-section" style="background-image: url(images/home-hero@2x.jpg);"></section></section>

当然,我想用干净的代码来做。看起来我需要使用View Composers,但我不确定这是正确的方法,并且不确定代码的外观。

2 个答案:

答案 0 :(得分:1)

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer('layouts.header', function ($view) {
            $view->with('variable_name', \App\Path-To-Your-Model::something());
        });
    }

答案 1 :(得分:0)

您可以使用View :: share()在所有视图中共享一个值,请参阅docs

例如

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav nav-list">
  <li>
    <label class="nav-header">WorkLoad</label>
    <ul class="nav nav-list tree">
      <li>
        <label class="tree1">DME Report</label>
        <ul class="tree1">
          <li>
            <a href="search.php">Report1</a>
            <a href="search.php">Report2</a>
          </li>
        </ul>
      </li>
      <li><a href="update.php">CAMB Report</a></li>
      <li><a href="index2.php">LMAB Report</a></li>
      <li><a href="#">DMF Notification</a></li>
      <li><a href="#">LME Forecast Report</a></li>
    </ul>
  </li>
</ul>

如果您想将值设置为,这种方法很有效。就个人而言,我会在'BaseController'的构造函数中设置值,该值由其他控制器扩展。这使得代码更容易被发现,因为大多数人都希望在控制器中设置视图值。如果您打算让应用程序的某个部分不需要计算该值,那么它也会更灵活。