Thứ Năm, 19 tháng 11, 2015

Tìm hiểu về Controller và cách sử dụng Controller trong Laravel 5.1 ( phần 1 )


Kết thúc hai bài trước, chúng ta đã đề cập về Routing View trong Laravel Framework được vận hành như thế nào. Thông qua bài đó, tuy chưa thật sự nắm hết các vấn đề liên quan đến Routing và View nhưng bạn đã có cái nhìn cơ bản và toàn diện về hai khái niệm đóng vai trò quan trọng trong Laravel Framework. Tiếp tục trong bài này, chúng ta sẽ nói về khái niệm Controller, một khái niệm quan trọng mà bạn có thể bắt gặp nó ở bất kỳ PHP Framework nào.

Laravel cho bạn sự vận hành trực tiếp trong Routing thông qua cách viết closure, nhưng khi bạn phải xử lý các thao tác phức tạp và nhiều thì tốt hơn hết, bạn nên thao tác chúng trên Controller. Có như thế thì ứng dụng của bạn mới trở nên linh hoạt và dễ mở rộng sau này.

Đây là một bài học tuy không dài nhưng lại có kiến thức mới nhiều nên tôi chia ra làm 2 phần :

- Phần 1 :
  + Basic Controller
  + Controller & Namespaces
  + Naming Controller Routes
  + URLs To Controller Actions
- Phần 2 :
  + Controller Middleware
  + RESTful Resource Controllers

1. Basic Controller

Để thao tác với controller, trước hết bạn cần tạo trong thư mục app/Http/Controllers một file theo cơ chế: TênController.php. Ví dụ:UserController.php và có 1 action là showProfile .

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return Response
     */
    public function showProfile($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}
Khi đó chúng ta sẽ có route tương ứng :
Route::get('user/{id}', 'UserController@showProfile');
Như bạn thấy, với mã lệnh ở trên. Chúng ta tạo ra UserController kế thừa lớp chủ đạo là Controller và phương thức đầu tiên ta xây dựng là showProfile(). Trong phương thức này ta thực hiện việc gọi view từ thư mục resources/views/user, nạp tập tin profile.blade.php. Đồng thời ta truyền sang view một biến tên user với giá trị là một mảng của user tương ứng với $id được tìm thấy.

2. Controllers & Namespaces

Nói đơn giản là trong thư mục Controllers ta có thể tạo thêm các thư mục nhỏ hơn nữa được định nghĩa là namespaces .
Ví dụ ta tạo thư mục User trong thư mục Controllers . Và trong thư mục User ta tạo một file là UserController.php với phương thức showProfile như ở trên .


<?php

namespace App\Http\Controllers\User;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return Response
     */
    public function showProfile($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}
Khi đó chúng ta cũng sẽ có route tương ứng :
Route::get('user/{id}', 'User\UserController@showProfile');

3. Naming Controller Routes
Có nghĩa là ta có thể tạo một cái tên cho route để dễ dàng sử dụng.
Route::get('foo', ['uses' => 'FooController@method', 'as' => 'name']);
 4. URLs To Controller Actions
Chúng ta có thể dễ dàng gọi được url ra một cách cực kì đơn giản với route
$url = route('name');
với controller và action :

$url = action('FooController@method');
Hoặc với route hiện đang chạy trên trình duyệt
$action = Route::currentRouteAction();




Không có nhận xét nào:

Đăng nhận xét