Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel中渲染之前更改视图指定的数据?_Php_Laravel_Laravel Middleware - Fatal编程技术网

Php 如何在Laravel中渲染之前更改视图指定的数据?

Php 如何在Laravel中渲染之前更改视图指定的数据?,php,laravel,laravel-middleware,Php,Laravel,Laravel Middleware,Laravel相关问题 对于下面的SomeController类,我返回带有“data”的视图。我想搜索指定的“数据”是否有“id”列,并在呈现视图之前对其进行加密。因此,当我从视图文件访问“数据”时,“id”是加密的 class SomeController { public function index(): View { $data = array( 'id' => 1, 'name' => 's

Laravel相关问题

对于下面的SomeController类,我返回带有“data”的视图。我想搜索指定的“数据”是否有“id”列,并在呈现视图之前对其进行加密。因此,当我从视图文件访问“数据”时,“id”是加密的

class SomeController 
{
    public function index(): View
    {
        $data = array(
            'id' => 1,
            'name' => 'siam'
        );
        return view('Views/View/Index', compact('data'));
    }
}
也许可以在扩展类方法中扩展视图类和加密。但我希望在不扩展View类的情况下完成它

  • 意念
a。使用中间件

我可以使用在呈现视图之前触发的中间件处理程序吗

b。还有别的办法吗

或在渲染视图之前修改视图指定数据的任何其他方法


提前感谢大家。

在呈现
视图时,Laravel将发送一个事件。您可以通过创建一个通用的
ViewComposer
钩住此事件,如下所示:

View::composer('*', function ($view) {
    if ($view->id && is_int($view->id)) {
        $view->id = encrypt($view->id);
    }
});
有关详细信息,请参见ViewComposer上的