首先,我的master.blade文件包含使用此菜单栏
包含Blade文件menu.blade.php
@include('menu')
但最后我意识到要从db发送一些数据到菜单栏,然后我创建控制器,控制器名称是MenuController,然后我创建路由“ admin-menu ”。 现在我想将该链接包含在我的主刀片中。如何做到这一点谢谢,
答案 0 :(得分:1)
要从路由闭包或控制器将数据传递到视图,请执行以下操作之一:
$now = \Carbon\Carbon::now();
View::make('my-view', ['name' => 'Alex', 'date' => $now]); // pass data into View:::make()
View::make('my-view')->with(['name' => 'Alex', 'date' => $now]); // pass data into View#with()
View::make('my-view')->withName('Alex')->withDate($now); // use fluent View#with()
所以你只是在View :: make()调用中使用它们,因为你可能已经这样做了:
// in a route closure
Route::get('some-route', function () {
return View::make('menu', ['name' => 'Alex']);
});
// in a controller
public function someRoute()
{
return View::make('menu', ['name' => 'Alex']);
}
有趣的是,在很多框架/模板系统中,如果你想要包含部分内容,你可以在部分调用中传递你希望在该部分中可用的数据,但是Laravel并不是这样。这样做。例如,在一个虚构的系统中你可能有这样的东西:
// in controller:
$this->render('home', ['name' => 'Alex', 'age' => 30]);
// home.php
<?php echo $name; ?>
<?php echo $this->partial('home-age', ['age' => $age]); ?>
// home-age.php
<?php echo $age; ?>
但是在Laravel中,所有当前视图变量都会自动包含在partial中。现在我倾向于指定变量(Blade允许你像上面那样执行此操作),显然它可以用来覆盖视图变量:
// route:
return View::make('home', ['name' => 'Alex', 'age' => 30, 'gender' => 'male']);
// home.blade.php
{{ $name }}
@include('home-extra', ['age' => 20])
// home-extra.blade.php
{{ $age }}
{{ $gender }}
上面的代码会输出:
Alex
20
male
所以在@include
中覆盖了年龄,但未被覆盖的gender
只是被传递过来。希望这是有道理的。