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

laravel

Thời gian gần đây trong thế giới PHP, Laravel là cái tên được nhắc đến rất nhiều bên cạnh những tên tuổi framework đã quen thuộc với những người lập trình PHP như CakePHP, Code Igniter, Zend ... Vậy hãy cùng tìm hiểu dần xem bên trong nó có gì mà lại tạo được tiếng vang như vậy. Tôi sẽ đi từ bước đầu tiên là Cài đặt. Và phiên bản sử dụng sẽ là 5.1

1. Yêu cầu

Cần phải có những yếu tố sau để có môi trường cho Laravel hoạt động :

  • PHP >= 5.5.9
  • OpenSSL PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension

2. 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. Và nhờ nó mà chúng ta sẽ giảm thiểu được rất nhiều công sức. Chỉ bằng 2 lệnh sau là chúng ta đã có 😃

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

3. 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

3.1. 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.

3.2. Dùng Laravel Installer để tạo project

Trước tiên, chúng ta sẽ dùng composer để cài đặt laravel installer :

composer global require "laravel/installer=~1.1"

Khi xong download, thì ~/.composer/vendor/bin/laravel file sẽ được tạo. Đây chính là laravel installer command. Để chạy được các command thì cần phải thiết lập đường dẫn vào ~/.composer/vendor/bin :

# ~/.bashrc
export PATH=$HOME/.composer/vendor/bin:$PATH

Cuối cùng để tạo project ta sẽ dùng lệnh new như sau :

laravel new PROJECT_NAME

4. Thiết lập môi trường

Di chuyển đến thư mục của project để tiến hành những thiết lập cần thiết.

cd PROJECT_NAME

4.1. .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.

Trong trường hợp dùng git thì hãy nhớ đưa file _.env_ vào _.gitignore_

4.2. config/app.php

Trong này nếu cần thiết sẽ thiết lâp time và ngôn ngữ :

// config/app.php
return [
    // ...

    'timezone' => 'Asia/Tokyo',
    'locale' => 'ja',

    // ...
];

4.3. config/database.php

Khi thiết lập DB thì cần khai báo cả connection vào trong file .env, ví dụ với sqlite :

// .env
DB_CONNECTION=sqlite
// config/database.php
return [
    'default' => env('DB_CONNECTION', 'mysql'),

    ...

    'connections' => [
        'sqlite' => [
            'driver'   => 'sqlite',
            'database' => storage_path().'/database.sqlite',
            'prefix'   => '',
        ],
        ...
    ],

4.4. Chạy

Chúng ta sẽ thử chạy ứng dụng Laravel bằng built-in server của PHP :

php -S localhost:8000 -t public

Lựa chọn -t dùng để chỉ định thư mục public, là thư mục document root của project. Khi chạy lệnh này mà access vào localhost:8000 thấy được logo của Laravel 5 là đã thành công. Ngoài ra, ta cũng có thể chạy bằng lệnh artisan và có vẻ dễ, ngắn gọn hơn :

php artisan serve
Một chú ý là để chạy được thì ta cần cấp quyền đọc ghi cho thư mục strage và bootstrap/cache.

5. 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.

5.1. Tạo project

Chúng ta sẽ tạo một project để phục vụ cho việc tìm hiểu và đặt tên nó là blog.

laravel new blog

cd blog
php artisan serve

5.2. Cấu trúc của thư mục

Cũng như các framewokr khác thì Laravel có rất nhiều thư mục cũng như file, và một lúc chúng ta không thể đi hết được nên sẽ tìm hiểu dần dần. Trong phạm vi bài này sẽ chỉ nói về view.

blog
├── app
│   └── Http
│       └── Controllers
└── resources
    └── views

5.3. 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.

5.4. 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.

5.5. 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('/', '[email protected]')

Ý 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.

To be continued ...

Nguồn : Laravel10.wordpress.com