Viblo Code
+2

Nghiên cứu về Laravel Framework

Trước khi đến với laravel framework mà mình dùng chủ yếu là Yii 1 và thấy rất hài lòng về nó, tuy nhiên đến hiện nay khi mà Yii 2.0 ra mắt, mình buộc phải quyết định chuyển sang Y2 hay là chuyển sang 1 framework khác. Sau khi nghiên cứu khá nhiều các framework, phân tích điểm mạnh điểm yếu thì mình chốt lại là sẽ chuyển sang Laravel, 1 framework cực mới (ra mắt năm 2013) nhưng lại trở nên phổ biến, nhiều người dùng nhất trong chính năm 2013(quá ấn tượng).

chart1-1024x853.png

Tại sao chọn Laravel:

– Được thừa hưởng những ưu điểm và thế mạnh của các framework khác.

– Có số lượng người sử dụng nhiều nhất

– Document rõ dàng, dễ học

– Autoload theo namespace.

– Sử dụng mô hình ORM rất đơn giản khi thao tác với DB

– Các lệnh tương tác với cơ sở dữ liệu cực kỳ ngắn gọn và thân thiện.

– Việc quản lý layout thật sự giản đơn với Balade Templating .

– Dễ dàng tích hợp các thư viện khác vào dự án, và được quản lý với Composer

– Phần route rất mạnh!!!

Để cài đặt và sử dụng Laravel thì bạn cần cài đặt Composer, đấy là phần mềm quản lý thư viện và phụ thuộc rất tuyệt vời của PHP và phần core của Laravel build trên composer. Để cài đặt bạn truy cập: http://getcomposer.com.

Sau khi cài đặt bạn chạy lệnh sau để cài đặt Laravel về máy mình:

composer create-project laravel/laravel your-project-name --prefer-dist – Sau đó các bạn thử chạy đường link http://localhost/laravel/public/ và sẽ nhận được kết quả như sau:

laravel2-300x116.png

– Các bạn truy cập vào app/config/app.php và chỉnh sửa lại những thông tin cơ bản sau: 'url' => 'http://localhost/laravel/'

  • Cấu hình key,các bạn tìm tới dòng có cấu hình key mục đích của lệnh này là tăng tính bảo mật của những cookie và session cho website.Hoặc các bạn có thể sử dụng lênh CMD như sau: php artisan key:generate

Chạy ứng dụng đầu tiên với Laravel Framework

Các bạn truy cập vào file app/routes.php và thêm vào nội dung sau vào cuối file:

Route::get('/dang-nhap', function(){
    echo 'Day trang dang nhap';
});

Chắc nhìn vào đây các bạn cũng hiểu được là khi vào đường dẫn: http://localhost/laravel/dang-nhap thì sẽ hiển thị: Day trang dang nhap . Như vậy đó, laravel rất dễ hiểu 😄

Nhưng trong các ứng dụng thức tế ta cần xử lý nhiều nên ta cần tách biệt logic xử lý ra các controller.Có như vậy thì ứng dụng của bạn mới trở nên linh hoạt và dễ mở rộng sau này

Tìm hiểu về Controller

– Để tạo 1 controller các bạn cần vào thư mục app/controller với các quy tắc sau: Tên file trùng với tên Class Kế thừa từ lớp BaseController Ví dụ:

<?php
class FramgiaController extends BaseController {
    public function test(){
        echo 'Tim hieu ve Controller trong Laravel tai Framgia';
    }
}

sau khi tạo controller ta cần khai báo route đến nó như sau:

Route::get('/controller-test', '[email protected]');

Để truyền tham số vào controller ta làm như sau:

<?php
class FramgiaController extends BaseController {
    public function view($title, $id)
    {
        echo 'Bạn đang xem bài viết '.$title.' có ID là :'.$id;
    }
}

Khai báo route:

Route::get('/bai-viet-{title}/{id}', '[email protected]');

Khi đó ta có thể truy xuất theo đường dẫn: http://localhost/laravel/public/framgia-viet-nam/1

Với các Controller có nhiều action, ta chỉ cần khai báo 1 lần:

Route::controller('framgia', 'FramgiaController');

Khi đó khi request đến: http://localhost/laravel/public/framgia/abc thì Laravel sẽ tự động tìm đến action abc của controller FramgiaController để xử lý

Kết nối cơ sở dữ liệu

Laravel kết nối tới cơ sở dữ liệu và chạy truy vấn cực kỳ đơn giản. Cấu hình nằm tại file app/config/database.php. Trong file này thì định nghĩa tất cả những loại kết nối cơ sở dữ liệu:


'mysql' => array(

            'driver'    => 'mysql',

            'host'      => 'localhost',

            'database'  => 'laravel',

            'username'  => 'root',

            'password'  => '',

            'charset'   => 'utf8',

            'collation' => 'utf8_unicode_ci',

            'prefix'    => '',

        ),

Sau khi cấu hình xong thông tin DB ta có thể dễ dàng truy vấn như sau:

$results = DB::select('select * from users where id = ?', array(1));
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'framgia'));
DB::update('update users set name = "abc" where id = ?', array('1'));
DB::delete('delete from users');
DB::statement('drop table users');
Với transaction thì ta dùng câu lệnh như sau:

DB::transaction(function()
{
DB::table('users')->update(array('id' => 1));

DB::table('posts')->delete();
});

sử dụng Eloquent ORM

Trước tiên mình sẽ tạo 1 file model có tên User.php với nội dung sau nhé:

class User extends Eloquent {
 protected $table = 'users';
}
  • Khi model được định nghĩa là chúng ta có thể thao tác trên nó,và lớp model đều phải kế thừa từ lớp Eloquent
  • Thuộc tính $table sẽ khai báo bảng dữ liệu mà ta sẽ thao tác. Sau khi khai báo như trên ta thao tác với bảng users rất dễ dàng như sau: Lấy dữ liệu:
$users = User::all();
foreach ($user as $row)
{
 echo $row->name.'<br />';
}
Lấy dữ liệu thông qua id:
$user = User::find(1);
echo $user->name;
Lấy dữ liệu có điều kiện:
$users = User::where('id', '>', 100)->take(10)->get();
foreach ($users as $user)
{
 var_dump($user->name);
}
Insert dữ liệu:
$user = new User;
$user->name = 'Trungx';
$user->save();
Update dữ liệu cũng tương tự:
$user = User::find(1);
$user->name = 'Xtrung';
$user->save();
Và xóa dữ liệu:
$user = User::find(1);
$user->delete();

View trong Laravel

Vậy là chúng ta đã tìm hiểu về Controller và Model, phần cuối sẽ là phần View, Laravel sử dụng template engine riêng là Blade:

Để định nghĩa layout ta khai báo trong Controller:

class UserController extends BaseController {
/**
 * The layout that should be used for responses.
 */
 protected $layout = 'layouts.master';
/**
 * Show the user profile.
 */
 public function showProfile()
 {
 $this->layout->content = View::make('user.profile');
 }
}

Các file template được định nghĩa trong thư mục views với đuôi .blade.php. Ví dụ 1 layout

<html>
 <body>
 @section('sidebar')
 This is the master sidebar.
 @show
<div class="container">
 @yield('content')
 </div>
 </body>
</html>

Ở tất cả các phần view ta sẽ extend layout như sau:

@extends('layouts.master')

@section('sidebar')

<p>This is appended to the master sidebar.</p>
@stop

@section('content')
<p>This is my body content.</p>
@stop

Để sử dụng các biến php và các hàm ta đặt trong dấu {{{ và }}}, ví dụ:

{{{ isset($name) ? $name : 'Default' }}}

Để sử dụng mệnh đề if ta dùng @if và @endif như sau:

@if (count($records) === 1)
 I have one record!
@elseif (count($records) > 1)
 I have multiple records!
@else
 I don't have any records!
@endif
@unless (Auth::check())
 You are not signed in.
@endunless

Và để comment thì dùng như sau:

{{-- This comment will not be in the rendered HTML --}}

Trên đây là những gì tìm hiểu về các phần cơ bản nhất trong MVC của Laravel, mong các bạn yêu thích và tiếp tục tìm hiểu framework này!


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.