Xây dựng Layouts và Views trong laravel

Lượt xem: 11601

Xây dựng Layouts và Views trong laravel

Trong ứng dụng này chỉ có một view đơn giản chưa một form để thêm mới tasks cũng như một danh sách tất cả các tasks hiện tại. Để giúp bạn trực quan hóa chế độ xem, đây là hình chụp màn hỉnh của ứng dụng đã hoàn thành với kiểu CSS Bootstrap cơ bản được áp dụng.

 

1. Xác định layout

Hầu hết tất cả ứng dụng web chia sẻ cùng một layout trên các trang.

Ví dụ: ứng dụng này có một thanh điều hướng trên cùng thường xuất hiện trên mỗi trang (nếu chúng tôi có nhiều hơn một trang). Laravel giúp dễ dàng chia sẻ tinh năng phổ biến này trên mọi trang bằng cách sử dụng Blade layouts.

Như chúng ta đã thảo luận trước đó, tất cả các views được lưu trữ tại resources/views. Vì vậy hãy xác định một view layout mới trong resources/views/layouts/app.blade.php. Phần mở rộng .blade.php là định dạng của Blade templating engine. Tất nhiên bạn có thể sử dụng các PHP templates cơ bản với Laravel. Tuy nhiên Blade cung cấp các cách viết gắn gọn thuận tiện.

File app.blade.php của chúng ta sẽ trông như sau:


// resources/views/layouts/app.blade.php

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
        <title> Làm quen nhanh với laravel cơ bản</title> 

         <!-- CSS And JavaScript --> 
   </head> 

   <body> 
        <div class="container"> 
           <nav class="navbar navbar-default"> 
                <!-- Navbar Contents --> 
           </nav> 
        </div> 

        @yield('content')
    </body> 
 </html> 

Note @yield(‘content’) là một phần của layout. Đây là mộ lệnh Blade đặt biệt chỉ định nơi tất cả các trang có được kế từ từ layout có thể chèn nội dung của riêng chúng.

Tiếp theo, hay xác định các view con sẽ sử dụng layout này và cung cấp nội dung chính của nó.

2. Xác định layout con

Tuyệt vời, layout của ứng dụng đã hoàn thành. Tiếp theo chúng ta cần xác định một view có chứa một form để tạo mới task cũng như thiển thị một bảng danh sách tasks đang tồn tại. Hãy xác định một view trong resources/views/tasks.blade.php

Chúng ta sẽ bỏ qua một số bản tóm tắt Bootstrap CSS và chỉ tập trung vào những thứ quan trọng.


// resources/views/tasks.blade.php

@extends('layouts.app')

@section('content')

   <!-- Bootstrap Boilerplate... -->

   <div class="panel-body">
        <!-- Display Validation Errors -->
        @include('common.errors')

      <!-- New Task Form -->
      <form action="/task" method="POST" class="form-horizontal">
            {{ csrf_field() }}

        <!-- Task Name -->
       <div class="form-group">
           <label for="task" class="col-sm-3 control-label">Task</label>

                <div class="col-sm-6">
                 <input type="text" name="name" id="task-name" class="form-control">
               </div>
         </div>

         <!-- Add Task Button -->
        <div class="form-group">
             <div class="col-sm-offset-3 col-sm-6">
                 <button type="submit" class="btn btn-default">
                       <i class="fa fa-plus"></i> Add Task
                   </button>
              </div>
          </div>
       </form>
  </div>

    <!-- TODO: Current Tasks -->
@endsection


Một vài lưu ý và giải thích

Trước khi tiếp tục, chúng ta hay nói về template này một chút. Đầu tiên, lệnh @extends thông báo cho Blade rằng chúng tôi đang sử dụng bố cục mà chúng tôi đã xác định tại resources/views/layouts/app.blade.php. Tất cả nội dụng nằm giữa @section(‘content’) @endsection sẽ được nạp vào vị trí của @yield(‘content’) chỉ thị trong layout app.blade.php

Bây giờ chúng ta xác định một layout và view cơ bản trong ứng dụng. Hãy nhớ rằng, chúng ta trả lại view này từ route /.
 

Route::get('/', function () {
    return view('tasks');
});


Tiếp theo chúng ta thêm code cho route POST  /task  để xử lý đầu vào form ad thêm mới 1 task vào cơ sở dữ liệu (database).
Chú ý: @include('common.errors') chỉ thị sẽ tải template tại resources/views/common/errors.blade.php.