## Blade
~~~php
// 輸出內容,被轉義過的
{{ $var }}
// 輸出未轉義內容
{!! $var !!}
{{-- Blade 注釋,不會被輸出到頁面中 --}}
// 三元表達式的簡寫,以下相當于「isset($name) ? $name : 'Default'」
{{ $name ?? 'Default' }}
// 等同 echo json_encode($array);
@json($array);
// 禁用 HTML 實體雙重編碼
Blade::withoutDoubleEncoding();
// 書寫 PHP 代碼
@php
@endphp
@csrf // CSRF 域
@method('PUT') // HTML 表單偽造方法 _method
// 服務容器注入,后調用 {{ $metrics->monthlyRevenue() }}
@inject('metrics', 'App\Services\MetricsService')
~~~
### 包含和繼承
~~~php
// 擴展布局模板
@extends('layout.name')
// 區塊占位
@yield('name')
// 第一種、直接填入擴展內容
@section('title', 'Page Title')
// 第二種、實現命名為 name 的區塊(yield 占位的地方)
@section('sidebar')
// 繼承父模板內容
@parent
@endsection
// 可繼承內容區塊
@section('sidebar')
@show
// 繼承父模板內容(@show 的區塊內容)
@parent
// 包含子視圖
@include('view.name')
// 包含子視圖,并傳參
@include('view.name', ['key' => 'value']);
@includeIf('view.name', ['some' => 'data'])
@includeWhen($boolean, 'view.name', ['some' => 'data'])
// 包含給定視圖數組中第一個存在的視圖
@includeFirst(['custom.admin', 'admin'], ['some' => 'data'])
// 加載本地化語句
@lang('messages.name')
@choice('messages.name', 1);
// 檢查片斷是否存在
@hasSection('navigation')
@yield('navigation')
@endif
// 迭代 jobs 數組并包含
@each('view.name', $jobs, 'job')
@each('view.name', $jobs, 'job', 'view.empty')
// 堆棧
@stack('scripts')
@push('scripts')
<script src="/example.js"></script>
@endpush
// 棧頂插入
@prepend('scripts')
@endprepend
// 組件
@component('alert', ['foo' => 'bar'])
@slot('title')
@endslot
@endcomponent
// 注冊別名 @alert(['type' => 'danger'])...@endalert
Blade::component('components.alert', 'alert');
~~~
### 條件語句
~~~php
@if (count($records) === 1)
@elseif (count($records) > 1)
@else
@endif
// 登錄情況下
@unless (Auth::check())
@endunless
// $records 被定義且不是 null...
@isset($records)
@endisset
// $records 為空...
@empty($records)
@endempty
// 此用戶身份已驗證...
@auth // 或 @auth('admin')
@endauth
// 此用戶身份未驗證...
@guest // 或 @guest('admin')
@endguest
@switch($i)
@case(1)
@break
@default
// 默認
@endswitch
~~~
### 循環
~~~php
// for 循環
@for ($i = 0; $i < 10; $i++)
@endfor
// foreach 迭代
@foreach ($users as $user)
@endforeach
// 迭代如果為空的話
@forelse ($users as $user)
@empty
@endforelse
// while 循環
@while (true)
@endwhile
// 終結循環
@continue
@continue($user->type == 1) // 帶條件
// 跳過本次迭代
@break
@break($user->number == 5) // 帶條件
// 循環變量
$loop->index // 當前迭代的索引(從 0 開始計數)。
$loop->iteration // 當前循環迭代 (從 1 開始計算)。
$loop->remaining // 循環中剩余迭代的數量。
$loop->count // 被迭代的數組元素的總數。
$loop->first // 是否為循環的第一次迭代。
$loop->last // 是否為循環的最后一次迭代。
$loop->depth // 當前迭代的嵌套深度級數。
$loop->parent // 嵌套循環中,父循環的循環變量
~~~
### JavaScript 代碼
~~~php
// JS 框架,保留雙大括號,以下會編譯為 {{ name }}
@{{ name }}
// 大段 JavaScript 變量,verbatim 里模板引擎將不解析
@verbatim
Hello, {{ javascriptVariableName }}.
@endverbatim
~~~
- 參考知識--非必學僅供必要時候查詢
- 知識清單
- Composer 安裝等
- artisan--創建模型-控制器-各種模塊
- Route--路由
- Paginate--分頁
- File--文件
- View--視圖
- template--模版
- Model--模型
- Schema--數據表索引-外鍵-字段類型
- DB-基本使用-查詢語句-joins-聚合--原生sql-增刪改查等
- message--消息
- Validation--驗證規則
- Auth-用戶認證-用戶權限
- Helper-數組對象-路徑-字符串-urls-links等
- Session會話
- Response--回應
- Request--請求
- Redirect--重定向
- Environment--環境
- Log--日志
- URL--地址
- Event--事件
- Input--輸入
- Security安全--哈希-加密解密
- Queue--監聽
- Container--容器
- Config--參數設置
- Cache--緩存
- Cookie--設置-獲取--刪除等
- Mail--郵件
- String--字符串
- Collection--集合
- Storage--存儲
- Lang--語言
- 單元測試
- 文件夾結構簡介
- 第一章 laravel8運行環境的搭建(已經有了運行環境的直接跳過)