```markup @yield('content') @if(session('status')) @component('bs::alert', ['type' => 'info']) {{ session('status') }} @endcomponent @endif ``` ``` 7. 然後,就可以把`home.blade.php`刪除(因為也用不到了) ### 三、列出所有測驗 1. 接著開啟控制器 `/專案/app/Http/Controllers/ExamController.php`,編輯裡面的`index()`函數,並將所有測驗的資料陣列用`compact('exams')`傳至樣板 ```php public function index() { $exams = Exam::all(); return view('exam.index',compact('exams')); } ``` 2. 至於`Exam::all()`則是`Exam`模型取得所有資料的用法(在上面有`use App\Exam;`才能這樣使用),更多方法可參考: 3. 接著開啟`/專案/resources/views/exam/index.blade.php`利用`@foreach`及`@endforeach`寫法來產生迴圈: ``` ```php @extends('layouts.app') @section('content') 測驗一覽 @foreach($exams as $exam) {{ $exam->created_at->format("Y年m月d日") }} - {{ $exam->title }} @endforeach @endsection ``` ``` 4. `$exam->created_at->format("Y年m月d日")`是用Carbon 日期時間套件的功能,該套件已經內建於 Laravel 5 中,詳細用法可以參考:或 5. 預設情況下,Eloquent 會把 `created_at` 和 `updated_at` 字段轉換成 Carbon 實例, 它繼承了 PHP 原生的 `DateTime` 類,並提供了各種有用的方法。若有其他日期欄位想轉換成Carbon 實例,可以直接在Model中利用 `$dates` 屬性,自行定義哪些日期類型字段會被自動轉換: ```php /** * 應被轉換為日期的屬性。 * * @var array */ protected $dates = ['birthday']; ``` 6. 至於日期格式,可以參考 PHP 手冊: 7. 另外一種`@forelse`搭配`@empty`及`@endforelse`寫法,可以在沒有資料的情形顯示自訂內容: ``` ```php @extends('layouts.app') @section('content') 測驗一覽 @forelse($exams as $exam) {{ $exam->created_at->format("Y年m月d日") }} - {{ $exam->title }} @empty 尚無任何測驗 @endforelse @endsection ``` ``` 8. 大功告成!請直接在網址輸入: 或 (注意,後面不可以有 / ,否則路由以後會誤判) 9. 其中每個測驗的連結均為:`exam/編號`,如此,符合顯示單一資料的路由寫法 [](https://github.com/tad0616/exam56/commit/428bb628bcba011e6a24cc55810ab3b5e970e8ee)
```php @extends('layouts.app') @section('content') 測驗一覽
進階搜尋