如何从 Laravel 5 中的控制器将数据放入 app.blade.php
How put data in app.blade.php from controller in Laravel 5
我需要将一些动态数据从控制器放到 app.blade.php,但我找不到任何控制器。我应该在哪里做这个?
谢谢
要将数据注入布局视图(由其他人@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'
]
感谢 lukasgeiter 的回答。但它需要一些修改才能使其与 Laravel.
呈现的所有视图一起使用
您需要将“*”字符作为通配符,以便您可以将作曲家附加到所有视图
View::composer('*', function($view){
//any code to set $val variable
$val = 'bar';
$view->with('foo', $val);
});
如此完整 app\Providers\ComposerServiceProvider.php
的 class 就像,
<?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,
],
现在您可以在 resources\views\layouts\app.blade.php
文件中使用 $foo
变量作为
<div>
{{$foo}}
</div>
这将呈现给客户端
<div>
bar
</div>
我需要将一些动态数据从控制器放到 app.blade.php,但我找不到任何控制器。我应该在哪里做这个? 谢谢
要将数据注入布局视图(由其他人@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'
]
感谢 lukasgeiter 的回答。但它需要一些修改才能使其与 Laravel.
呈现的所有视图一起使用您需要将“*”字符作为通配符,以便您可以将作曲家附加到所有视图
View::composer('*', function($view){
//any code to set $val variable
$val = 'bar';
$view->with('foo', $val);
});
如此完整 app\Providers\ComposerServiceProvider.php
的 class 就像,
<?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,
],
现在您可以在 resources\views\layouts\app.blade.php
文件中使用 $foo
变量作为
<div>
{{$foo}}
</div>
这将呈现给客户端
<div>
bar
</div>