Laravel中无需控制器直接在Blade获取数据库数据实现菜单隐藏
直接在Blade中查询数据库实现菜单隐藏的方案
首先回复你的核心疑问:完全可以直接在blade.php文件中查询数据库获取数据,不需要经过控制器,不过仅推荐在逻辑非常简单、复用性极低的场景下使用,复杂逻辑还是建议放到控制器、服务类或者View Composer中维护,降低后续维护成本。
具体实现步骤
假设你存储用户表单提交记录的Eloquent模型命名为FormSubmission,关联用户的外键字段为user_id,在你渲染菜单的Blade文件中加入如下代码即可:
@php // 查询当前登录用户是否有提交过表单记录 $hasSubmittedForm = \App\Models\FormSubmission::where('user_id', auth()->id())->exists(); @endphp {{-- 仅当用户提交过表单时展示my Form菜单 --}} @if($hasSubmittedForm) <li> <a href="{{ route('your.form.route') }}">my Form</a> </li> @endif
注意事项
- 如果你的项目允许未登录游客访问,需要先判断用户登录状态,避免调用
auth()->id()时报错,查询代码可调整为:$hasSubmittedForm = auth()->check() ? \App\Models\FormSubmission::where('user_id', auth()->id())->exists() : false; - 请将代码中的
\App\Models\FormSubmission替换为你自己项目中对应模型的实际命名空间 - 不要在Blade模板中编写复杂的多表关联查询、数据计算逻辑,否则后续代码迭代、问题排查的成本会大幅提升
内容的提问来源于stack exchange,提问作者umair ur rehman
相关产品推荐
相关产品推荐

