07/09/2018, 17:37

Bài 9: Controller trong Laravel

-Trong mô hình MVC thì project sẽ được chia ra làm 3 phần(Model,View,Controller) và trong Laravel framework cũng chia làm 3 phần như vậy. Ở phần trước mình đã giới thiêu với các bạn về view trong Laravel rồi. Và ở phần này mình sẽ giới thiệu với các bạn về Controller trong Laravel. 1,Tạo ...

-Trong mô hình MVC thì project sẽ được chia ra làm 3 phần(Model,View,Controller) và trong Laravel framework cũng chia làm 3 phần như vậy. Ở phần trước mình đã giới thiêu với các bạn về view trong Laravel rồi. Và ở phần này mình sẽ giới thiệu với các bạn về Controller trong Laravel.

1,Tạo controller trong Laravel.

-Cũng giống như view, để tạo controller trong Laravel cũng phải có một số ràn buộc như sau:

  • Controller phải được đặt trong đường dẫn AppHttpcontrollers
  • Tên của controller phải giống với tên class trong file controller đó.
  • Class controller (do bạn tạo) phải extends(kế thừa) từ Controller (chú ý chữ C phải viết hoa).

=>Cách tạo file: -Ở trong Laravel để tạo controller thì chúng ta có hai cách:

Cách 1: Tạo bằng tay.

-Chúng ta có thể tạo một file controller bằng tay hoặc bằng cmd thuần trong đường dẫn AppHttpControllers. Và để sử dụng được controller đó thì bắt buộc các bạn phải tuân thủ 3 điều kiện phía trên nhé.

-Ví dụ: mình tạo một homecontroller.php trong AppHttpControllers thì trong file sẽ có nội dung như sau:

<?php
namespace AppHttpControllers;

class homecontroller extends Controller
{
    //your code
}

Cách 2:  Tạo bằng lệnh laravel cung cấp sẵn. + Để tạo một controller bằng lệnh trong Laravel thì các bạn chỉ việc mở commanline lên và trỏ vào thư mục chứa project Laravel của bạn (xem lại bài 1) và gõ lệnh theo cú pháp.

php artisan make:controller controllername

Hoặc

php artisan make:controller controllername --resource

để tạo resource controllers

  • Chú thích: controllername là tên controller các bạn muốn tạo.

Khi đó Laravel sẽ tự sinh cho chúng ta 1 file controllername và có sẵn code như sau:

<?php

namespace AppHttpControllers;

use AppUser;
use AppHttpControllersController;

class controllername extends Controller
{
    //
}

-Và với resource controllers:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use AppHttpRequests;

class controllername extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return IlluminateHttpResponse
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function destroy($id)
    {
        //
    }
}

=>Các bạn thấy cách này khá đơn giản đúng không.

2,Sử dụng dụng các action trong Controllers.

-Để tạo một action trong controllers thì chúng ta chỉ việc tạo một hàm ở trong controllers và gọi nó ở trong Route là được.

-Ví dụ: Mình sẽ tạo một controllers home controller và một hàm là index.

<?php
namespace AppHttpControllers;

class homecontroller extends Controller
{
    public function index(){
    	echo "Đây là index trong homecontroller";
    }
}

Và chúng ta sẽ tạo một route để gọi đến action đó.

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

-Như thế là chúng ta đã gọi và sử dụng được action trong Controllers rồi.

3,Truyền tham số trong action Controllers.

-Để truyền tham số trong action Controllers thì nó hoàn toàn giống PHP thuần, nên mọi người đọc ví dụ sau của mình rồi tự suy ra kết luận nhé.

-Ví Dụ: Vẫn với homecontroller ở trên, nhưng mình sẽ cho truyền tham số vào controllers như sau:

<?php
namespace AppHttpControllers;

class homecontroller extends Controller
{
    public function index($name,$age){
    	echo "Xin chào $name, $age tuổi";
    }
}

Và mình sẽ khởi tạo một route có truyền tham số cho nó như sau:

Route::get('a/{name}/{age}','[email protected]')->where(['name'=>'[a-zA-Z]+','age'=>'[0-9]+']);

(ai không hiểu xem lại bài 5 nhé) -Như thế là bạn đã có thể truyền tham số cho action trong controllers rồi.

4,Lời Kết.

-Qua phần chia sẻ cơ bản về controllers của mình ở trên thì mình rất hy vọng là mọi người có và nắm được cái nhìn tổng quan cũng như là cách sử dụng Controllers cơ bản trong Larvel. Phần sau mình sẽ giới thiệu với mọi người về cách cấu hình database và xử lý truy vấn với Query Buider trong Laravel.

0