как сделать php vars нетронутым при создании представления в laravel? - PullRequest
3 голосов
/ 05 апреля 2019

Я пытаюсь сгенерировать новые блейд-файлы из контроллера. Так как это работает. Я беру основной файл blade-сервера и пытаюсь внедрить данные из Contentbuilder. Данные из Contentbuilder верны, как я хочу, но все {{$vars}} из основного файла преобразуются в строки вместо {{$vars}}. например:

<input type="hidden" id="token" name="_token" value="{{ csrf_token() }}">

Становится:

<input type="hidden" id="token" name="_token" value="T4JB7Y1DNdIXsWe4k0AiLUaKtSvoDJwIcSOgGW5e">

Как мне этого избежать?

Я пробовал с ->render(), но результаты те же. я пробовал с включает, но тот же результат.

Вот как генерируется новый блейд-файл.

$page = PagesDetails::where('uuid',$request->page)->first();

File::put(resource_path('views/front/demotest.blade.php'),
        view('front.defaultpage',["pagecontent" => $request->item,"settings" => $this->settings,"page"=> $page])

Я просто хочу, чтобы phpvars не тронут, чтобы он мог автоматически вызываться при загрузке страницы.

, чтобы {{$vars}} оставался в новом сгенерированном блейд-файле

Как я это исправил: Поскольку вся помощь здесь была не совсем такой, как я хотел, я сделал некоторые изменения самостоятельно.

Сначала данные (полученные от Contentbuilder) были сохранены в новом блейд-файле. Затем я сделал prepend-файл, чтобы добавить первую часть стандартного блейд-файла со всеми php-переменными. Затем я добавил файл, чтобы добавить последнюю часть файла блейда по умолчанию. Так что после этого у меня был полный блейд-файл, как будто я написал его вручную с рабочими php-переменными.

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Использовать следующий синтаксис:

<input type="hidden" id="token" name="_token" value="{!! '{{ csrf_token() }}' !!}">

Объяснение:

{!! 'something' !!}

Когда вы используете эту синтаксическую переменную, она не оценивается, а анализируется как есть. Затем вам нужно разместить строковое представление того, что вы хотите быть там. Поэтому кавычки над функцией / помощником.

Прочтите о «Отображении неэкранированных данных» в документах .

0 голосов
/ 05 апреля 2019

Я не уверен, что вы можете сохранить только переменные, но вы можете получить необработанное содержимое файла представления, используя обычный PHP, например:

file_get_contents(resource_path('views/home.blade.php'));
...