如何从Laravel 5中的控制器将数据放入app.blade.php
我需要将一些动态数据从controller放到app.blade.php,但我找不到任何控制器。我应该在哪里做这件事?如何从Laravel 5中的控制器将数据放入app.blade.php,laravel,controller,Laravel,Controller,我需要将一些动态数据从controller放到app.blade.php,但我找不到任何控制器。我应该在哪里做这件事? 感谢将数据注入布局视图(由其他人@extend编辑的视图),您可以使用视图生成器。你如何做到这一点实际上相当不错 创建服务提供商(在应用程序/提供商中): 之后,不要忘记在config/app.php中将服务提供商注册到providers数组中: 'providers' => [ // other providers 'App\Providers\Comp
感谢将数据注入布局视图(由其他人
@extend
编辑的视图),您可以使用视图生成器。你如何做到这一点实际上相当不错
创建服务提供商(在应用程序/提供商
中):
之后,不要忘记在config/app.php
中将服务提供商注册到providers
数组中:
'providers' => [
// other providers
'App\Providers\ComposerServiceProvider'
]
感谢卢卡斯盖特的回答。但它需要一些修改,以使其能够处理Laravel渲染的所有视图 您需要将“*”字符作为通配符,以便可以将编写器附加到所有视图
View::composer('*', function($view){
//any code to set $val variable
$val = 'bar';
$view->with('foo', $val);
});
因此,app\Providers\composeServiceProvider.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()
{
//
}
}
现在,您可以在resources\views\layouts\app.blade.php
文件中使用$foo
变量作为
<div>
{{$foo}}
</div>
{{$foo}}
这将向客户端呈现为
<div>
bar
</div>
酒吧
阅读Laravel文档中的这两秒钟:我指的是加载app.blade.php的控制器。因为我需要把一些数据放进报头。它不是由任何控制器加载的。它由渲染的视图扩展。你可以在那里传递数据,或者更好,使用a。你能告诉我应该怎么做吗?我需要添加将返回变量的函数。为什么这个函数对我有效?我使用的是laravel 5.6,我添加了CompositeServiceProvider
,当我试图打开视图时,它没有给我这样的变量foo
。我需要刷新设置吗?
'providers' => [
// Other Service Providers...
App\Providers\ComposerServiceProvider::class,
],
<div>
{{$foo}}
</div>
<div>
bar
</div>