我@admin ... @endadmin在 中创建了一个自定义刀片指令AppServiceProvider。但该指令正在被缓存。php artisan view:clear这就是为什么我每次新登录后都必须运行命令的原因。在不影响性能的情况下使用自定义刀片指令的最佳方法是什么?
boot这是方法中的逻辑AppServiceProvider
Blade::directive('admin', function () {
$isAuth = 'false';
if (Auth::user() && Auth::user()->role_id == 3) {
$isAuth = 'true';
}
return "<?php if ($isAuth): ?>";
});
Blade::directive('endadmin', function () {
return "<?php endif; ?>";
});
Run Code Online (Sandbox Code Playgroud)
Blade 视图以及 Blade 指令在更新后仅渲染到 php 文件一次。在您的情况下,将在第一次访问页面时检查身份验证状态。
要使指令检查每个请求的身份验证状态,您必须将 php 代码作为字符串发送回视图,以便每次都可以执行它。
您可以通过检查文件夹来了解渲染视图的外观storage/framework/views。这包含所有已编译的视图。
对于您的情况,您必须从指令中返回类似以下内容:
return '<?php if (auth()->user() && auth()->user()->role_id == 3): ?>';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |