Laravel Cơ bản

Laravel là một Framework mã nguồn mở sử mô hình MVC (Model-View-Controller) mạnh mẽ giúp bạn có thể dễ dàng tạo ra các ứng dụng PHP từ đơn giản đến phức tạp nhất một các nhanh chóng. Sau khi được giới thiệu, Laravel đã phát triển nhanh chóng và hiện nay đã đứng đầu trong danh sách các Framework PHP được sử dụng nhiều nhất.

Laravel được đi kèm với một số thành phần như sau:

  • Routing
  • Blade (Template System)
  • Eloquent (Database – Model)
  • Caching
  • Filter
  • Event
  • Hook
  • Authentication

Hôm nay mình sẽ hướng dẫn cài đặt và cấu hình Laravel để các bạn có thể bắt đầu ngay việc chinh phục Laravel

I. Cài đặt Laravel

1. Chuẩn bị

  • Trước tiên các bạn cần cài đặt composer

  • Một webserver với:

PHP >= 5.4 MCrypt PHP Extension Các bạn cần cài đặt localhost trước khi tiếp tục. Đối với mình thì đang sử dụng LAMP.

2. Cài đặt

  • Mở terminal chạy lệnh sau:
composer global require "laravel/installer=~1.1"

Bạn nên nhớ chèn export PATH="$PATH:~/.composer/vendor/bin" vào trong .bashrc . Sau đó bạn gõ laravel trên terminal bạn sẽ thấy ngạc nhiên vì laravel đã đc cài đặt xong rồi đấy.

3. Cấu hình

Chuyển vào thư mục Laravel cd laravelproject Gõ lệnh sau để tạo một key ngâu nhiên trong app/config/app.php (giúp mã hóa session và các thông tin khác) php artisan key:generate Mở file app/config/app.php, ở đây có một số mục bạn cần chú ý như : app.debug bật debug chi tiết giúp bạn dễ dàng kiểm soát lỗi. Nếu giá trị false thì chỉ có một thông báo ngắn với lỗi 500 được xuất ra (Internal Servel Error)

Pretty URL (URL Rewrite)

Mặc định thì trong thư mục /public đã có file cấu hình .htaccess dành cho Apache để sử dụng Pretty URL. Nhưng nếu không có thì bạn có thể cấu hình như sau :

Apache

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Lưu ý: mod_rewrite phải được bật trong Apache thì Pretty URL mới có hiệu lực

Nginx

Thêm thông tin sau vào file nginx.conf (lưu ý, đây không phải cấu hình hoàn chỉnh dành cho Nginx)

location / {
try_files $uri $uri/ /index.php?$query_string;
}

Database

Laravel Eloquent được xây dựng trên PDO nên hỗ trợ nhiều loại database (MySQL, PogresSQL, SQLite)...và bạn có thể kết hợp sử dụng nhiều database cùng lúc trong ứng dụng.

Để cấu hình, các bạn mở file app/config/database.php. Ở đây bạn chỉ cần quan tâm đến 2 mục đó là app.default và app.mysql.

Mục app.default có nghĩa là database được Laravel sử dụng mặc định Mục app.connections : cấu hình các kết nối. Bạn hãy tạo 1 database mới rồi nhập các thông số phù hợp vào. Ở đây mình chọn mysql là mặc định và cấu hình:

'connections' => array(

		'sqlite' => array(
			'driver'   => 'sqlite',
			'database' => __DIR__.'/../database/production.sqlite',
			'prefix'   => '',
		),

		'mysql' => array(
			'driver'    => 'mysql',
			'host'      => 'localhost',
			'database'  => 'laravel_blog',
			'username'  => 'root',
			'password'  => 'admin',
			'charset'   => 'utf8',
			'collation' => 'utf8_unicode_ci',
			'prefix'    => '',
		),

		'pgsql' => array(
			'driver'   => 'pgsql',
			'host'     => 'localhost',
			'database' => 'forge',
			'username' => 'forge',
			'password' => '',
			'charset'  => 'utf8',
			'prefix'   => '',
			'schema'   => 'public',
		),

		'sqlsrv' => array(
			'driver'   => 'sqlsrv',
			'host'     => 'localhost',
			'database' => 'database',
			'username' => 'root',
			'password' => '',
			'prefix'   => '',
		),

	),

Như vậy chúng ta đã cài đặt xong Laravel 😃

II. Tạo một blog cá nhân với Laravel

Các bạn làm theo hướng dẫn sau:

  • Tạo project: laravel new blog . Truy cập vào thư mục blog: cd blog
  • Tạo database: create database blog;
  • Cài đặt migration: php artisan migrate:install
  • Blog cơ bản sẽ có các bài post và comment. Như vậy ta cần tạo 3 bảng users, posts và comments bằng các câu lệnh sau:
php artisan migrate:make create_users_table
php artisan migrate:make create_posts_table
php artisan migrate:make create_comments_table ```
- Thêm các trường cho các file migration  vừa tạo:

 users

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

	/**
	 * Run the migrations.
	 *
	 * @return void
	 */
	public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->create();
            $table->increments('id');
            $table->string('username');
            $table->string('password');
            $table->string('email');
            $table->string('remember_token', 100)->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->drop();
        });
    }

}

 posts
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function(Blueprint $table){ $table->increments('id'); $table->string('title'); $table->string('read_more'); $table->text('content'); $table->unsignedInteger('comment_count'); $table->timestamps(); $table->engine = 'MyISAM'; }); DB::statement('ALTER TABLE posts ADD FULLTEXT search(title, content)'); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('posts', function(Blueprint $table) { $table->dropIndex('search'); $table->drop(); }); } } ``` comment ``` <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateCommentsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('comments', function(Blueprint $table) { $table->increments('id'); $table->unsignedInteger('post_id'); $table->string('commenter'); $table->string('email'); $table->text('comment'); $table->boolean('approved'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('comments'); } } ``` Sau khi đã thêm xong chạy lệnh php artisan migrate . Và kiểm tra trong database blog, các bạn sẽ thấy 3 bảng đã được tạo. - Tạo model Post, Comment : (trước hết phải thêm gói generate vào composer.json) ``` php artisan generate:model Post php artisan generate:model Comment ``` - Tạo controller PostController, UserController và CommentController: ``` php artisan controller:make PostController php artisan controller:make UserController php artisan controller:make CommentController ``` - Tạo các thư mục view tương ứng cho post và comment trong app/views Như vậy mình đã hướng dẫn các bạn tạo khung của blog trước khi tiến hành code. Các bạn đọc tài liệu trên laravel.com để hiểu rõ cơ chế làm viêc, cũng như tạo cho mình một blog hoàn chỉnh. Có thể tham khảo link source: https://github.com/vietntframgia/my_blog Cảm ơn các bạn đã đọc bài viết. Trên đây chỉ là những hướng dẫn rất sơ sài, vì thế nếu bạn thấy sự tuyệt vời của Laravel hãy bắt đầu tìm hiểu thôi.