视图操作-你忽略的却很实用的点-共享变量与自定义注入服务、指令
学习链接
如何在视图间共享变量?
通过视图对象提供的 share
方法即可实现,我们可以在某个服务提供者如 AppServiceProvider
的 boot
方法中定义共享的视图变量:
view()->share('siteName', 'Laravel学院');
view()->share('siteUrl', 'https://xueyuanjun.com');
在视图中注入服务
服务注入指令:
@inject 在视图模板中注入服务,以便快捷使用服务中提供的方法
作用:
都是为了避免每次从路由定义/控制器方法中显式重复传递变量到视图模板,提高开发人员的工作效率
@inject('analytics', 'App\Services\Analytics')
<div class="finances-display">
{{ $analytics->getBalance() }} / {{ $analytics->getBudget() }}
</div>
自定义 Blade 指令?
可以通过 Blade::directive
方法为其编写一个自定义指令。和 View Composer 一样,需要在 AppServiceProvider
的 boot
方法中注册这个指令:
Blade::directive('datetime', function($expression) {
return "<?php echo ($expression)->format('Y/m/d H:i:s'); ?>";
});
注:更新完 Blade 指令逻辑后,必须删除所有的 Blade 缓存视图指令才能生效。缓存的 Blade 视图可以通过 Artisan 命令
view:clear
移除。