Jen*_*sej 4 controller laravel
我需要将一些动态数据从控制器放到app.blade.php,但我找不到任何控制器.我在哪里这样做?谢谢
要将数据注入布局视图(@extend由其他人编辑的视图),您可以使用视图编辑器.你如何做到这一点实际上在文档中很好地解释
创建服务提供者(内部app/Providers):
<?php namespace App\Providers;
use View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
public function boot()
{
//
}
public function register()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
现在在boot()方法内注册视图编辑器:
View::composer('app', function($view){
$view->with('foo', 'bar');
});
Run Code Online (Sandbox Code Playgroud)
之后,不要忘记通过将服务提供商config/app.php添加到providers数组来注册服务提供商:
'providers' => [
// other providers
'App\Providers\ComposerServiceProvider'
]
Run Code Online (Sandbox Code Playgroud)
感谢 lukasgeiter 的回答。但是它需要一些修改才能让它与 Laravel 渲染的所有视图一起工作。
您需要将 '*' 字符作为通配符,这样您就可以为所有视图附加一个作曲家
View::composer('*', function($view){
//any code to set $val variable
$val = 'bar';
$view->with('foo', $val);
});
Run Code Online (Sandbox Code Playgroud)
所以完整的类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()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
还将config\app.php文件中的服务提供商注册为,
'providers' => [
// Other Service Providers...
App\Providers\ComposerServiceProvider::class,
],
Run Code Online (Sandbox Code Playgroud)
现在您可以$foo在resources\views\layouts\app.blade.php文件中使用变量作为
<div>
{{$foo}}
</div>
Run Code Online (Sandbox Code Playgroud)
这将呈现给客户端
<div>
bar
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |