Как изменить назначенные просмотром данные перед рендерингом в Laravel? - PullRequest
0 голосов
/ 16 ноября 2018

Вопрос, связанный с Laravel

Для следующего класса SomeController я возвращаю представление с «данными». Я хочу найти, если назначенные «данные» имеет столбец «идентификатор» и зашифровать его перед отображением представления. Поэтому, когда я получаю доступ к «данным» из файла представления, «идентификатор» шифруется.

class SomeController 
{
    public function index(): View
    {
        $data = array(
            'id' => 1,
            'name' => 'siam'
        );
        return view('Views/View/Index', compact('data'));
    }
}

Возможно, можно расширить класс View и зашифровать его в методе расширенного класса. Но я надеялся сделать это без расширения класса View.

  • Идея

а. Использование промежуточного программного обеспечения

Могу ли я использовать обработчик промежуточного программного обеспечения, который запускается перед рендерингом View?

б. Любые другие способы

Или любым другим способом, с помощью которого я могу изменить данные, назначенные для просмотра, перед визуализацией.

Спасибо всем заранее.

1 Ответ

0 голосов
/ 16 ноября 2018

При рендеринге View Laravel отправит событие composing:<view-name>.Вы можете подключиться к этому событию, создав универсальный ViewComposer следующим образом:

View::composer('*', function ($view) {
    if ($view->id && is_int($view->id)) {
        $view->id = encrypt($view->id);
    }
});

См. Документацию на ViewComposers для получения дополнительной информации.

...