(02) Laravel 视图和模板
===== 视图 =====
32. 使用视图加载 css,blade,php 三种文件
33. view() 函数 return view('以.分隔的视图模板路径');
34. 给视图传递参数 return view('user.profile', ['id' => $id]);
35. 给视图传递参数 return view('user.profile', compact('id'));
36. 给视图传递参数 return view('home')->with('tasks', Task::all());
37. 给视图传递参数 return view('home', ['tasks' => Task:all()]);
38. 在视图间共享变量
AppServiceProvider 的 boot方法中, view()->share('siteName', 'Laravel');
===== Blade模板 =====
39. 常见三种语法 {{}}, {!! !!}, @
40. @的特殊作用 (不解析,跳过)
{{ $phpData }}// Blade 引擎会将其编译为对应的 PHP 代码
@{{ $vueData }}// Blade 引擎编译时会移除 @,保留 {{ $vueData }} 结构
41. 注释: {{-- 注释内容 --}}
42. 条件语句: @if、@else、@elseif、@endif
43. 条件语句: @unless、@endunless
44. 判断语句: @isset、@endisset @empty、@endempty
45. 多分支语句: @switch、@case、@break、@default、@endswitch
46. 循环语句: @for、@endfor / @foreach、@endforeach / @while、@endwhile
47. 循环: @forelse、@empty、@endforelse
48. @foreach 和 @forelse 中的 $loop 变量
===== Blade模板和组件 =====
49. @yield 和 @section/@show
50. @yield('content')
51. @section
@section('footerScripts')
<script src="{{ asset('js/app.js') }}"></script>
@show
52. 通过 @extends 和 @section/@endsection 在子视图实现继承
53. @parent
布局文件中通过 @section/@show 定义,所以我们可以在子视图中通过 @parent 渲染布局文件中指定的默认区块内容
54. @include 引入其他视图组件
55. 通过 @each 指令循环引入单个组件
@each('partials.module', $modules, 'module', 'partials.empty-module')
<h1>{{ $module->title }}</h1>
56. 通过 @slot 和 @component 实现更加灵活的内容分发
===== view composer =====
57.指定视图作用域来预设共享「变量」
app/Providers/AppServiceProvider.php 的 boot 方法
view()->composer('partials.sidebar', function ($view) {
$view->with('posts', Post::recent());
});
58. 数组/通配符的方式指定多个视图作用域
view()->composer(['partials.header', 'partials.footer']
view()->composer('partials.*',
59. 抽出文件
app/Http/ViewComposers/View Composer 类 RecentPostsComposer.php
调用拆分出去的功能
view()->composer( 'partials.sidebar', \App\Http\ViewComposers\RecentPostsComposer::class );
60. blade 命令编写: AppServiceProvider 的 boot
Blade::directive('datetime', function($expression) {
return "<?php echo ($expression)->format('Y/m/d H:i:s'); ?>";
});

浙公网安备 33010602011771号