prinsfrank / indenting-persistent-blade-compiler
Laravel Blade 编译器的扩展,当在 blade 模板中使用替换内容时,它保持缩进。
v8.80
2022-01-30 22:39 UTC
Requires
- php: ^7.2 || ^8.0
- ext-json: *
- illuminate/support: ^8.0
- illuminate/view: ^8.0
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^8.2
README
你是否曾看过 Laravel 生成的 HTML,并对其混乱感到困惑?这正是我想通过这个包解决的问题。由于这不会在 Laravel 框架本身中得到修复 因此我决定将其作为一个包来制作,现在它就在这里!
问题
所有替换内容类型的示例
// app.blade.php
@push('scripts')
<stack></stack>
<stack></stack>
@endpush
<html>
<head>
@stack('scripts')
</head>
<body>
<sidebar>
@section('sidebar')
<sidebarcontent></sidebarcontent>
@show
</sidebar>
<container>
@yield('content')
</container>
</body>
</html>
// main.blade.php
@extends('example.app')
@section('sidebar')
@parent
<sidebarsectioncontent></sidebarsectioncontent>
@endsection
@section('content')
<level-1>
@include('example.include')
@includeif('example.include')
@includewhen(true, 'example.include')
@includefirst(['example.include', 'example.include'])
<level-2>
<level-3>
@each('example.include', [1,2], 'index')
</level-3>
</level-2>
@component('example.component')
@slot('title')
<title></title>
<title></title>
@endslot
<component></component>
<component></component>
@endcomponent
</level-1>
@endsection
// component.blade.php
<wrapper-component>
<wrapper-title>
{{ $title }}
</wrapper-title>
{{ $slot }}
</wrapper-component>
// include.blade.php
<include>
</include>
结果生成以下 HTML。乱糟糟的,对吧?
<html>
<head>
<stack></stack>
<stack></stack>
</head>
<body>
<sidebar>
<sidebarcontent></sidebarcontent>
<sidebarsectioncontent></sidebarsectioncontent>
</sidebar>
<container>
<level-1>
<include>
</include> <include>
</include> <include>
</include> <include>
</include> <level-2>
<level-3>
<include>
</include><include>
</include> </level-3>
</level-2>
<wrapper-component>
<wrapper-title>
<title></title>
<title></title>
</wrapper-title>
<component></component>
<component></component>
</wrapper-component></level-1>
</container>
</body>
</html>
这个包修复了这个问题,并生成了以下 HTML
<html>
<head>
<stack></stack>
<stack></stack>
</head>
<body>
<sidebar>
<sidebarcontent></sidebarcontent>
<sidebarsectioncontent></sidebarsectioncontent>
</sidebar>
<container>
<level-1>
<include>
</include>
<include>
</include>
<include>
</include>
<include>
</include>
<level-2>
<level-3>
<include>
</include>
<include>
</include>
</level-3>
</level-2>
<wrapper-component>
<wrapper-title>
<title></title>
<title></title>
</wrapper-title>
<component></component>
<component></component>
</wrapper-component>
</level-1>
</container>
</body>
</html>
设置
运行 composer require prinsfrank/indenting-persistent-blade-compiler
运行 php artisan view:clear
清除已经编译的视图。别忘了在生产部署时也做这个操作,现有的模板将会损坏!