DANH MỤC: Laravel

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 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 App\Http\controllers
  • 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 App\Http\Controllers. 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 App\Http\Controllers thì trong file sẽ có nội dung như sau:

<?php
namespace App\Http\Controllers;

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 App\Http\Controllers;

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

class controllername extends Controller
{
    //
}

-Và với resource controllers:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

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

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

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

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

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

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    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 App\Http\Controllers;

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','homecontroller@index');

-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 App\Http\Controllers;

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}','homecontroller@index')->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.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

Biển học vô biên, quay đầu là dại!

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia