Tìm hiểu Laravel từ số 0

trieu.dev.da

Nguyễn Thanh Triều
Cài đặt Composer

Composer là một trình quản lý rất tốt quan hệ giữa các gói ( thư viện) có liên quan đến nhau.
Cài đặt Laravel và tạo project
Chúng ta có hai cách để tạo 1 project Laravel :
  • Thông qua composer.
  • Sử dụng Laravel Installer.
Dùng composer tạo project
Chúng ta sẽ dùng câu lệnh composer với option đưa vào là create-project :
composer create-project laravel/laravel --prefer-dist PROJECT_NAME
Phần laravel/laravel chính là là 'vendor name/package name'. Phần -prefer-dist là option có 2 loại :
  • -prefer-source : tiến hành download bản develop từ source code
  • -prefer-dist : tiến hành download bản release, bản đã ổn định
Và ngoài ra thì chúng ta có thể chỉ đinh cả phiên bản sau tên project nên nếu muốn thì hoàn toàn có thể tạo những project với các phiên bản cũ của Laravel.
.env
Trong trường hợp mà file .env chưa được tạo thì ta sẽ thực hiện copy và tạo từ file .env.example rồi thực thi key:generate :
cp .env.example .env
php artisan key:generate
Trong file này lưu trữ những thông tin cần thiết để chia ra các môi trường thực thi khác nhau. Nên hoàn toàn có thể thiết lập password, DB ... cho từng máy develop, staging, production.
Khi chạy lệnh php artisan key:generate thì một chuỗi random của application nhất định sẽ được thiết lập vào APP_KEY trong .env
Chạy
Chạy bằng lệnh artisan và có vẻ dễ, ngắn gọn hơn: php artisan serve
Luồng hiển thị của trang
Laravel là một framework PHP theo mô hình MVC, nên luồng xử lý đại khái sẽ như hình bên dưới :

laravel

Trong bài này sẽ nói về phần User -> Routing -> Controller -> View một cách cơ bản nhất. Còn những phần về Model, Database thì sẽ để sau.
Routing
Đầu tiên sẽ cùng xem file lưu trữ những thiết lập về Routing app/Http/routes.php :
<?php // app/Http/routes.php
Route::get('/', function () {
return view('welcome');
});
Phương thức GET sử dụng action là một hàm không tên với phần thân trả về một view tên welcome. Đó chính là vai trò của Routing - thực thi các actions tương ứng theo các thông tin về URI hay phương thức HTTP.
View
Giờ tiếp tục tìm hiểu về view có tên welcome. Các file về view sẽ được lưu trữ trong thư mục app/resources/views:
<!-- app/resouces/view/welcome.blade.php -->
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
<link href='//fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'>
<style>
...
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">Laravel 5</div>
<div class="quote">{{ Inspiring::quote() }}</div>
</div>
</div>
</body>
</html>
Đây chính là phần HTML được hiển thị khi mà chúng ta truy cập vào http://localhost:8000/. Laravel sử dụng template engine có tên gọi blade, sinh ra HTML từ các view file. Vì thế mà đuôi mở rộng của chúng có dạng name.blade.php. View có vai trò biến đổi dữ liệu thành dạng dễ nhìn thân thiện với người dùng.
Controller
Ở phần trên đã sử dụng đến hàm không tên trong action nhưng phần này chúng ta sẽ dùng đến Controller để thay thế nó. Dùng lệnh artisan để tạo Controller như sau :
php artisan make:controller --plain WelcomeController
Khi này thì WelcomeController.php sẽ được tạo với phần nội dung trống không nên ta sẽ thêm một phương thức index() như bên dưới :
<?php // app/Http/Controllers/WelcomeController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class WelcomeController extends Controller
{
public function index()
{
return view('welcome');
}
}
Phương thức index này thực thi hàm view và trả về giá trị. Giá trị đó sẽ là response đến trình duyệt. Hàm view là hàm tạo ra HTML từ view file nên ở đây nó sẽ sử dụng view welcome để tạo ra HTML.
Controller có vai trò nhận dữ liệu từ người dùng, chuyển cho bên Model xử lý, rồi nhận kết quả xử lý đưa đến View. Nhưng trog ví dụ này, thì ta không đưa cho View cái gì cả.
Sau đó, ta thay thế hàm không tên thành Controller mà đã tạo ở trên trong phần action của Routing :
<?php // app/Http/routes.php
//Route::get('/', function () {
// return view('welcome');
//});

Route::get('/', 'WelcomeController@index')

Ý nghĩa đoạn trên là sẽ thực thi phương thức index có trong lớp WelcomeController. Khi truy cập vào http://localhost:8000 thì kết quả sẽ tương tự với khi sử dụng hàm không tên vì bản chất cả hai đều dùng đến view welcome.
 
Bên trên