我需要将一些动态数据从控制器放到app.blade.php,但我找不到任何控制器。我在哪里这样做? 感谢
答案 0 :(得分:6)
要将数据注入布局视图(由其他人@extend
编辑的视图),您可以使用视图编辑器。你如何做到这一点实际上非常好explained in the documentation
创建服务提供者(在app/Providers
内):
<?php namespace App\Providers;
use View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
public function boot()
{
//
}
public function register()
{
//
}
}
现在在boot()
方法中注册视图编辑器:
View::composer('app', function($view){
$view->with('foo', 'bar');
});
之后,不要忘记在config/app.php
中注册服务提供商,方法是将其添加到providers
数组中:
'providers' => [
// other providers
'App\Providers\ComposerServiceProvider'
]
答案 1 :(得分:2)
感谢lukasgeiter的回答。但是需要进行一些修改才能使其与Laravel渲染的所有视图配合使用。
您需要将“ *”字符用作通配符,以便将作曲家附加到所有视图上
View::composer('*', function($view){
//any code to set $val variable
$val = 'bar';
$view->with('foo', $val);
});
app\Providers\ComposerServiceProvider.php
的完整类就像
<?php
namespace App\Providers;
use View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
public function boot()
{
View::composer('*', function($view){
//any code to set $val variable
$val = 'bar';
$view->with('foo', $val);
});
}
public function register()
{
//
}
}
还在config\app.php
文件中将服务提供商注册为
'providers' => [
// Other Service Providers...
App\Providers\ComposerServiceProvider::class,
],
否,您不能将$foo
文件中的resources\views\layouts\app.blade.php
变量用作
<div>
{{$foo}}
</div>
这将以
呈现给客户端<div>
bar
</div>