【问题标题】:How to change view-assigned data before render in Laravel?如何在 Laravel 中渲染之前更改视图分配的数据?
【发布时间】:2018-11-16 11:19:30
【问题描述】:

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 类的情况下完成它。

  • 想法

一个。使用中间件

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

b.任何其他方式

或者我可以在渲染视图之前修改视图分配数据的任何其他方式。

提前谢谢大家。

【问题讨论】:

    标签: php laravel laravel-middleware


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2021-05-01
      • 1970-01-01
      相关资源
      最近更新 更多