如何在 Laravel 中渲染之前更改视图分配的数据?
How to change view-assigned data before render in Laravel?
Laravel相关问题
对于下面的 SomeController class,我返回视图 "data"。我想搜索分配的 "data" 是否有 "id" 列并在呈现视图之前对其进行加密。所以当我从视图文件访问"data"时,"id"被加密了。
class SomeController
{
public function index(): View
{
$data = array(
'id' => 1,
'name' => 'siam'
);
return view('Views/View/Index', compact('data'));
}
}
也许可以扩展视图 class 并在扩展的 class 方法中加密。但我希望在不扩展 View class.
的情况下完成它
- 想法
一个。使用中间件
我可以使用在呈现视图之前触发的中间件处理程序吗?
b。任何其他方式
或者我可以在渲染视图之前修改视图分配数据的任何其他方式。
先谢谢大家了
渲染 View
时,Laravel 将调度 composing:<view-name>
事件。您可以通过创建一个通用的 ViewComposer
来挂接此事件,如下所示:
View::composer('*', function ($view) {
if ($view->id && is_int($view->id)) {
$view->id = encrypt($view->id);
}
});
有关详细信息,请参阅 ViewComposers 上的 documentation。
Laravel相关问题
对于下面的 SomeController class,我返回视图 "data"。我想搜索分配的 "data" 是否有 "id" 列并在呈现视图之前对其进行加密。所以当我从视图文件访问"data"时,"id"被加密了。
class SomeController
{
public function index(): View
{
$data = array(
'id' => 1,
'name' => 'siam'
);
return view('Views/View/Index', compact('data'));
}
}
也许可以扩展视图 class 并在扩展的 class 方法中加密。但我希望在不扩展 View class.
的情况下完成它- 想法
一个。使用中间件
我可以使用在呈现视图之前触发的中间件处理程序吗?
b。任何其他方式
或者我可以在渲染视图之前修改视图分配数据的任何其他方式。
先谢谢大家了
渲染 View
时,Laravel 将调度 composing:<view-name>
事件。您可以通过创建一个通用的 ViewComposer
来挂接此事件,如下所示:
View::composer('*', function ($view) {
if ($view->id && is_int($view->id)) {
$view->id = encrypt($view->id);
}
});
有关详细信息,请参阅 ViewComposers 上的 documentation。