Я новичок в Laravel, и я получаю практику преобразования предыдущего (простого) веб-сайта в Laravel.
По сути, я создал шаблон со структурой HTML и изменил основное содержимое, используя @включает в себя и @урожай.
Интересные части в html шаблон.blade.php похожи на
<!DOCTYPE html>
<html lang = "{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<!-- Title -->
<title>@yield('title')</title>
....
....
<!-- CSS Customization -->
<link rel = "stylesheet" href = "/assets/css/custom.css">
@yield('css')
....
....
@include('include._header')
@include('include._test_script')
@include('include._footer')
....
....
<!-- JS Customization -->
<script src = "/assets/js/custom.js"></script>
@yield('js')
Маршрутизатор вызывает test.blade.php, который включает шаблон. Этот блейд-файл имеет некоторый пользовательский php-код с переменной $extra_script.
<?php $extra_script = " alert(0); console.info(0);";?>
@extends('layouts.template')
@section('css')
....
@endsection
@section('js')
...
<script>
{!! $extra_script !!}
</script>
@endsection
При загрузке этой страницы скрипт работает нормально, и я вижу предупреждающее сообщение с содержимым 0.
Теперь я пытаюсь обновить $extra_string в файл /include/test_script.blade.php, но это не работает.
Этот включаемый файл лезвия выглядит так:
@php
$extra_script = " alert(1); console.info(1);";
@endphp
or
<?php $extra_script = " alert(1); console.info(1);"; ?>
В результате ошибок нет, но предупреждение (0) по-прежнему отображается.
Я понимаю, что не элегантно иметь PHP-код в шаблоне блейда, а в контроллере, но это быстрый и быстрый перенос, чтобы через некоторое время веб-сайт был онлайн.
Как это исправить в поле зрения?






Я бы сказал, что порядок неправильный, сначала test.blade.php простирается от template.blade.php. Это template.blade.php тот, кто устанавливает предупреждение на 1 с помощью @include('include._extra_script'), но затем, когда test.blade.php расширяется из этого шаблона, он перезаписывает $extra_script на тот, который предупреждает 0.