php - 如何在 Laravel 中渲染之前更改视图分配的数据?
问题描述
Laravel 相关问题
对于以下 SomeController 类,我将返回带有“数据”的视图。我想搜索分配的“数据”是否具有“id”列并在渲染视图之前对其进行加密。所以当我从视图文件中访问“数据”时,“id”被加密了。
class SomeController
{
public function index(): View
{
$data = array(
'id' => 1,
'name' => 'siam'
);
return view('Views/View/Index', compact('data'));
}
}
也许可以扩展 View 类并在扩展类方法中进行加密。但我希望在不扩展 View 类的情况下完成它。
- 主意
一个。使用中间件
我可以使用在渲染视图之前触发的中间件处理程序吗?
湾。任何其他方式
或者我可以在渲染视图之前修改视图分配数据的任何其他方式。
提前谢谢大家。
解决方案
当渲染 aView
时,Laravel 会派发一个composing:<view-name>
事件。您可以通过创建一个泛型来挂钩此事件,ViewComposer
如下所示:
View::composer('*', function ($view) {
if ($view->id && is_int($view->id)) {
$view->id = encrypt($view->id);
}
});
有关详细信息,请参阅ViewComposers 上的文档。
推荐阅读
- vb.net - 从 3 到 9 的值返回括号中的值
- java - 如何将视频和音频合并为一个文件 [Android Q]
- python-3.x - 将字符串转换为日期时间格式时格式不匹配
- amazon-web-services - 目标响应时间 aws 指标如何工作
- powershell - 在文本文件中查找图片文件的路径,并将文件路径交给poshgram
- javascript - 使用 JQuery 将类添加到第 n 个孩子及其孩子
- javascript - 我应该总是“等待”每一个承诺吗?
- eclipse - Eclipse 2020-09 (4.17.0) GWT 客户端调试错误
- java - Java JDA如何检查消息是否超过2周
- javascript - 为什么我使用数组映射方法创建的选项具有空值(React)?