我试着从3天开始学习拉维,我有点小问题。
在我的数据库中,我有一个表“settings”,它看起来像:
我需要在我加载的每个页面中使用这些数据。我这样做是为了在我的视图中加载数据:

public function indexFront()
{
    $posts = $this->blog_gestion->indexFront($this->nbrPages);
    $links = str_replace('/?', '?', $posts->render());


    //Here i load my setting
    $setting_gestion = new SettingRepository(new setting());
    $config = $setting_gestion->getSettings('ferulim');


    //Next i pass my setting to my view
    return view('front.blog.index', compact('posts', 'links', 'config'));
}

它工作,但我需要在每个控制器和每个功能…我想还有一种方法可以做同样的事情:p
帮助我!

最佳答案

您可以使用视图生成器(http://laravel.com/docs/5.0/views#view-composers)轻松实现对选定视图或所有视图的设置。
首先,您需要实现一个视图生成器,它执行您希望为每个视图执行的逻辑:

<?php namespace App\Providers;

use View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider {
  public function boot()
  {
    View::composer('*', function($view) {
      $blog_gestion = ...; // fetch or instantiate your $blog_gestion object
      $posts = $blog_gestion->indexFront($this->nbrPages);
      $links = str_replace('/?', '?', $posts->render());

      $setting_gestion = new SettingRepository(new setting());
      $config = $setting_gestion->getSettings('ferulim');

      $view->with(compact('posts', 'links', 'config'));
    });
  }

  public function register()
  {
    //
  }
}

接下来,在config/app.php的providers数组中注册新的服务提供者。
就这样:)如果有任何错别字/错误,请告诉我,我还没有机会运行代码。

09-19 00:28