在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。我该怎么做?
答案 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()
{
}
}