将变量传递给laravel中的主模板

时间:2015-11-26 18:37:05

标签: laravel model-view-controller controller laravel-routing

在laravel中,我已经定义了这样的路线

Route::get('/', array(){
    'as' => 'index',
    'uses' => 'HomeController@index'
});

HomeController中的函数index()包含

public function index(){
    $index = new ExampleModel;
    $data = $index->getExampleList();
    return View::make('public.index');
}

现在的问题是我在视图中的layouts文件夹中有一个名为happypath的主布局,它产生了这个public.index内容,我需要将这个$ data传递给layouts.happypath。我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以使用view composer例如:

match(look up value, look uparray,-1)

因此,每次使用/渲染namespace App\Providers; use App\ExampleModel; use Illuminate\Support\ServiceProvider; class ComposerServiceProvider extends ServiceProvider { protected $exampleModel; public function __construct(ExampleModel $exampleModel) { $this->exampleModel = $exampleModel; } public function boot() { view()->composer('layouts.happypath', function ($view) { $view->with('publicIndex', $this->exampleModel->getExampleList()); }); } public function register() { // } } 时,layouts.happypath变量都会附加在布局中。您还需要在$publicIndex的{​​{1}}文件中添加ComposerServiceProvider课程。您可以使用布局中的config/app.php变量访问/引用数据。还有其他方法,例如全局共享providers array使用$publicIndex方法在整个视图中共享数据的和平,但这可能会对您有所帮助。

答案 1 :(得分:0)

我找不到ComposerServiceProvider View::composer这件事。所以我在Laravel 4.2中基本上解决了这个问题。将此代码添加到BaseController.php

protected $menuList;

public function __construct() {
    $response = API::pool([
        ['GET', API::url('level')],
    ]);

    $index = new Index();
    $index->setCourseList($response[0]->json()['Category']);
    $result = $index->getCourseList();

    View::share('result', $result); //This line shares the $result globally across all the views in laravel 4.2

}

答案 2 :(得分:0)

这可以通过服务提供商完成。您可以使用现有的或创建新的。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\ExampleModel;

class ViewServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $index = new ExampleModel;
        $data = $index->getExampleList();
        view()->share('public.index', $data);
    }

    public function register()
    {

    }
}

来源:EasyLaravel.com