Hướng dẫn laravel return html - laravel return html

Trong bài viết thứ nhất về hướng dẫn cơ bản, mình đã giới thiệu với các bạn về các điều sau:

  1. Tạo project
  2. Cài đặt bootstrap, js, ghép theme
  3. Cấu hình database
  4. Repository Pattern

Ở bài viết này, mình sẽ giới thiệu tiếp với các bạn các kiến thức cơ bản tiếp theo để phát triển với Laravel

Route

Các routes trong

Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
0 xác định các route dành cho giao diện web của bạn. Các routes trong
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
1 xác định các route phần mềm trung gian api
Các routes trong
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
1 xác định các route phần mềm trung gian api

Các phương thức trong Route

Route sẽ hỗ trợ các phương thức như sau:

Route::get[$uri, $callback];
Route::post[$uri, $callback];
Route::put[$uri, $callback];
Route::patch[$uri, $callback];
Route::delete[$uri, $callback];
Route::options[$uri, $callback];

Trong đó $url: đường dẫn route và $callback : là một hành động nào đó sẽ được thực hiện để trả về.

Route::redirect['/here', '/there'];
Route::view['/welcome', 'welcome'];

Tham số tùy chọn

Nhiều khi chúng ta sẽ cần truyền tham số trên đường dẫn, chúng ta cũng có thể truyền trong route.

Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];

Tên Route

Route::get['user/profile', function [] {
    //
}]->name['profile'];

You may also specify route names for controller actions:

Route::get['user/profile', 'UserProfileController@show']->name['profile'];

Middleware

Để gán function middleware cho tất cả các route trong một nhóm, bạn có thể sử dụng middleware trước khi xác định route. Middleware được thực hiện theo thứ tự chúng được liệt kê trong mảng:

Route::middleware[['first', 'second']]->group[function [] {
    Route::get['/', function [] {
        // Uses first & second Middleware
    }];

    Route::get['user/profile', function [] {
        // Uses first & second Middleware
    }];
}];

Namespaces

Namespace trong Laravel giông như PHP namespace được chỉ định với một nhóm controller.

Route::namespace['Admin']->group[function [] {
    // Controllers Within The "App\Http\Controllers\Admin" Namespace
}];

Route Prefixes

Xét ví dụ sau

Route::get['manager/products', 'ProductController@index'];
Route::get['manager/products/create', 'ProductController@create'];
Route::post['manager/products/store', 'ProductController@store'];
Route::get['manager/products/{id}/edit', 'ProductController@edit'];
Route::patch['manager/products/{id}', 'ProductController@update];
Route::patch['manager/products/{id}', 'ProductController@destroy'];

Các bạn có thấy đặc điểm chung của các route đều bắt đầu bằng manager vì thể để viết gọn lại các URL thì chúng ta sẽ sử dụng prefix để URL khi định nghĩa route ngắn gọn dễ nhìn hơn.

Route::group[['prefix' => 'manager'], function [] {
    Route::get['products', 'ProductController@index'];
    Route::get['products/create', 'ProductController@create'];
    Route::post['products/store', 'ProductController@store'];
    Route::get['products/{id}/edit', 'ProductController@edit'];
    Route::patch['products/{id}', 'ProductController@update];
    Route::patch['products/{id}', 'ProductController@destroy'];
}];

Sub-Domain Routing

Tên miền phụ có thể được chỉ định tham số tuyến giống như URI route, cho phép bạn bắt một phần của tên miền phụ để sử dụng trong route hoặc controler. Tên miền phụ có thể được chỉ định bằng cách gọi phương thức miền trước khi xác định nhóm:
Tên miền phụ có thể được chỉ định bằng cách gọi phương thức miền trước khi xác định nhóm:

Route::redirect['/here', '/there'];
0

View

Blade Templates

Template engine có tác dụng giúp sạch đi những đoạn code PHP nằm trong View nên tách biệt hoàn toàn giữa người cắt CSS và người code PHP. Blade rất đơn giản, nhưng lại là một templating engine đầy mạnh mẽ! Blade không giới hạn chúng ta sử dụng code PHP trong views. Tất cả các file Blade sẽ được dịch thành file code PHP và cache cho đến khi file Blade bị thay đổi, điều đó cũng có nghĩa là Blade tự làm tất cả những việc cần thiết để có thể chạy views cho ứng dụng của bạn Các file view dùng cho Blade có phần tên đuôi file là

Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
2 và được lưu trong thư mục mặc định
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
3 Defining A Layout
Blade rất đơn giản, nhưng lại là một templating engine đầy mạnh mẽ! Blade không giới hạn chúng ta sử dụng code PHP trong views. Tất cả các file Blade sẽ được dịch thành file code PHP và cache cho đến khi file Blade bị thay đổi, điều đó cũng có nghĩa là Blade tự làm tất cả những việc cần thiết để có thể chạy views cho ứng dụng của bạn
Các file view dùng cho Blade có phần tên đuôi file là
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
2 và được lưu trong thư mục mặc định
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
3
Defining A Layout

Route::redirect['/here', '/there'];
1

Cú pháp tạo layout

Route::redirect['/here', '/there'];
2
Route::redirect['/here', '/there'];
3
  • Trên đây là một ví dụ về việc tạo ra một layout cho một ứng dụng
  • Mỗi session sẽ là một khu vực hiển thị giữ liệu trong ứng dụng. ta chỉ cần viết một lần và nó sẽ được gọi ra ở bất kỳ một màn hình con nào được extend
  • một session được bắt đầu bởi @session['name'] và kết thúc bởi @endsession
  • để include một layout ta sử dụng @exends['name_layout']

Kế thừaĐây là phần quan trọng nhất và cũng là mục tiêu của việc tạo ra các templete trong một ngôn ngữ lập trình Một templete tốt không chỉ dễ sử dụng mà còn phải có tác dụng kế thừa để có thể sử dụng lại, tránh tối đa việc lặp code Không thể nào tạo ra một file templete mà lại chỉ dùng cho một chức năng nhất định. ta phải làm cho chúng có thể sử dụng lại ở các màn hình khác có cùng chức năng. Cú pháp:
Đây là phần quan trọng nhất và cũng là mục tiêu của việc tạo ra các templete trong một ngôn ngữ lập trình
Một templete tốt không chỉ dễ sử dụng mà còn phải có tác dụng kế thừa để có thể sử dụng lại, tránh tối đa việc lặp code
Không thể nào tạo ra một file templete mà lại chỉ dùng cho một chức năng nhất định. ta phải làm cho chúng có thể sử dụng lại ở các màn hình khác có cùng chức năng.
Cú pháp:

Route::redirect['/here', '/there'];
4
Route::redirect['/here', '/there'];
5

Giờ ta include file

Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
4 vào màn hình
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
5

Route::redirect['/here', '/there'];
6

Kết quả thu được cũng tương hệt như kết quả lúc đầu. tuy nhiên từ nay ta có thể sử include templete

Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
6 vào bất kỳ đoạn nào cần sử dụng đến hiển thị
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
7 Các cú pháp trong blade templete engineĐể hiển thị giữ liệu trên view ta dùng dấu
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
8
Các cú pháp trong blade templete engine
Để hiển thị giữ liệu trên view ta dùng dấu
Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
8

Route::redirect['/here', '/there'];
7

Khi đó file blade sẽ tự build ra temple dạng theo dạng

Route::redirect['/here', '/there'];
8

Hiển thị giữ liệu tồn tại

Route::redirect['/here', '/there'];
9

Cú pháp rút gọn:

Route::get['posts/{post}/comments/{comment}', function [$postId, $commentId] {
    //
}];
9 Chú ý: Blate không chấp nhận các lệnh comment thông thường của php như
Route::get['user/profile', function [] {
    //
}]->name['profile'];
0. Lúc này mặc dù dòng code đã được comment nhưng khi được build ra view thì giữ liệu vẫn được sử lý và hiển thị bình thường. Cấu trúc điều khiểnLệnh if
Chú ý: Blate không chấp nhận các lệnh comment thông thường của php như
Route::get['user/profile', function [] {
    //
}]->name['profile'];
0. Lúc này mặc dù dòng code đã được comment nhưng khi được build ra view thì giữ liệu vẫn được sử lý và hiển thị bình thường.
Cấu trúc điều khiển
Lệnh if

Route::view['/welcome', 'welcome'];
0

Có thể thấy code đã đơn giản hơn rất nhiều so với việc ta sử dụng lệnh if với cú pháp php thông thường Vòng lặp
Vòng lặp

Route::view['/welcome', 'welcome'];
1
Route::view['/welcome', 'welcome'];
2
Route::view['/welcome', 'welcome'];
3

Localization

Route::view['/welcome', 'welcome'];
4

Ví dụ ở trên mình muốn cài đặt ngôn ngữ tiếng việt và tiếng anh cho trang web của mình. Mình tạo 2 thư mục " en " và " vi" trong " resources\lang\ " bên trong mình file messages.php trong file này mình viết các label hiển thị ra

Route::get['user/profile', function [] {
    //
}]->name['profile'];
1

Route::view['/welcome', 'welcome'];
5

Route::get['user/profile', function [] {
    //
}]->name['profile'];
2

Route::view['/welcome', 'welcome'];
5

Vậy ta thiết lập xong rồi, làm thế nào để dùng nó?Mỗi khi muốn in label thay vì ta gõ thẳng đoạn text đó bằng ngôn ngữ ta đang dùng thì ta sẽ dùng hàm trans[] để gọi tới những label chúng ta vừa thiết lập. Ta dùng

Route::get['user/profile', function [] {
    //
}]->name['profile'];
3
Mỗi khi muốn in label thay vì ta gõ thẳng đoạn text đó bằng ngôn ngữ ta đang dùng thì ta sẽ dùng hàm trans[] để gọi tới những label chúng ta vừa thiết lập.
Ta dùng
Route::get['user/profile', function [] {
    //
}]->name['profile'];
3

Laravel Collective Form/Html

Laravel collective là một package cung cấp cho chúng ta cách viết form, html với cú pháp ngắn gọn hơn, dễ nhìn hơn.// Không dùng Laravel collective
// Không dùng Laravel collective

Route::view['/welcome', 'welcome'];
7

// Dùng Laravel collective

Route::view['/welcome', 'welcome'];
8

Để cài đặt pakage này ta cài đặt nó qua composer với câu lệnh:

Route::get['user/profile', function [] {
    //
}]->name['profile'];
4 Tiếp theo ta cần config để sử dụng. Bạn vào
Route::get['user/profile', function [] {
    //
}]->name['profile'];
5 và thêm Provider và Aliases sau:
Tiếp theo ta cần config để sử dụng. Bạn vào
Route::get['user/profile', function [] {
    //
}]->name['profile'];
5 và thêm Provider và Aliases sau:

Route::view['/welcome', 'welcome'];
9

Tham Khảo

  1. //laravel.com/docs/5.7/routing
  2. //laravel.com/docs/5.7/blade
  3. //laravel.com/docs/5.7/localization
  4. //viblo.asia/p/laravel-collective-formhtml-naQZRJyvZvx
  5. //viblo.asia/p/da-ngon-ngu-trong-laravel-i18n-WAyK8LLoKxX

Bài Viết Liên Quan

Chủ Đề