softheroes / indenting-persistent-blade-compiler
这是一个扩展Laravel Blade编译器的插件,当在blade模板中使用替换内容时,它可以保持缩进。
v10.0
2023-11-16 15:29 UTC
Requires
- php: ^7.2 || ^8.0 || ^8.1
- ext-json: *
- illuminate/support: ^8.0 || ^8.1 || ^9.0 || ^10.0
- illuminate/view: ^8.0 || ^8.1 || ^9.0 || ^10.0
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^8.2
This package is auto-updated.
Last update: 2024-09-16 17:09:24 UTC
README
您是否曾看过Laravel生成的HTML,并对其混乱感到困惑?这正是我想通过这个包来解决的问题。[由于这将在Laravel框架自身中得不到修复](https://github.com/laravel/framework/pull/28768),我决定将其做成一个包,现在它就是了!
问题
包含所有替换内容类型的示例
// 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
以清除已编译的视图。不要忘记在部署到生产环境时也要这样做,否则现有的模板会损坏!