控制器

控制器是 MVC 架構裡面 Controller 的部份。

重申一下:將邏輯都塞入控制器很方便,但是不建議這麼設計。
比較好的方式是將控制器當作一個交通警察,由模型(model)處理邏輯,視圖(view)處理外觀

動物書建議使用 artisan 工具來生成控制器

php artisan make::controller TaskController

上述命令會得到一個新檔案 app/Http/Controllers/TasksController.php,內容為:

<?php

namespace App\Http\Controllers

use Illuminate\Http\Request;

use App/Http/Requests

class TaskController extends controller{

}

然後,我們加入一個public method,功能類似 Yii2 的 action:

<?php

namespace App\Http\Controllers

use Illuminate\Http\Request;

use App/Http/Requests

class TaskController extends controller{

    public function home(){
        return "Hello, world!";
    }
}

然後搭配一個簡單的路由

Route::get('/', 'TasksController@home');

這樣就行了!之後訪問 / 時,就會看到 Hello, world!

控制器方法

class TaskController extends controller{

    public function index(){
        return view('task.index')
            ->with('tasks', Task::all());
    }
}

這樣會載入tasks/index.blade.php或者 tasks/index.php 的 view,並傳入tasks變數。

取得用戶輸入

這裡先假設我們用 POST 方式取得Task的資料。資料有兩部份:標題(title)和說明(description)。

先簡單的綁定 POST 動作

// routes/web.php
Route::post('tasks', 'TasksController@store');

從 POST 取得輸入的方法有兩種。其中一種,是下面使用的Input 介面

// TasksController.php
//use Illuminate\Support\facades\Input
...
public function store(){
    $task = new Task;

    $task->title = Input::get('title');
    $task->description = Input::get('description');
    $task->save();

    return redirect('tasks');
}

results matching ""

    No results matching ""