我是Laravel的初学者,我正在练习将以前的(简单的)网站转换为Laravel。
基本上,我创建了一个具有HTML结构的模板,并使用 @includes 和 @yield
更改了主要内容。html template.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.log(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.log(1);";
@endphp
or
<?php $extra_script = " alert(1); console.log(1);"; ?>
结果没有错误,仍然显示警报(0)。
我知道在刀片模板中包含PHP代码而不是在控制器中包含PHP代码并不优雅,但这是一次快速,快速的移植,可以使网站在短时间内上线。
如何在视图中修复它?
答案 0 :(得分:0)
我会说顺序不正确,首先test.blade.php
从template.blade.php
开始扩展。它是template.blade.php
设置@include('include._extra_script')
来将警报设置为1的那个,但是随着test.blade.php
从该模板扩展而来,它正在将$extra_script
覆盖为一个警告0的警报。