与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类的情况下完成它。
a。使用中间件
我可以使用在呈现View之前触发的中间件处理程序吗?
b。任何其他方式
或其他任何可以在渲染视图之前修改视图分配的数据的方法。
谢谢大家。
答案 0 :(得分:1)
渲染View
时,Laravel将调度composing:<view-name>
事件。您可以通过创建通用的ViewComposer
来陷入此事件,如下所示:
View::composer('*', function ($view) {
if ($view->id && is_int($view->id)) {
$view->id = encrypt($view->id);
}
});
有关更多信息,请参见ViewComposers上的documentation。