Laravel 5 基礎教程 || 3.控制器:任務的分發者 - 表嚴肅

Laravel 5 基礎教程 || 3.控制器:任務的分發者 - 表嚴肅

教程目錄

控制器是個小媒人。php

有時候咱們發現直接把邏輯寫到路由裏要不了多久路由就變的及其肥大。html

Route::get('/', function()
{
    ...
    ...
    ... // (╯' ')╯╧═╧

})

這個時候怎麼辦呢?laravel

Controller到!vim

它通常是這麼幹活的:segmentfault

通知Model:你給我準備數據。windows

通知View:你給我準備模板。瀏覽器

給瀏覽器返回渲染好的模板。app

完工。spa

好比說咱們上一節課的Hello部分就可使用Controller實現。unix

Route::get('hello', 'HelloController@sayHello');

忽然簡潔好多有木有。
第一個傳參依然是地址參數,第二個傳參爲字符串,@以前的指定controller,以後的部分指定此controller所使用的方法。

建立Controller

不管是windows仍是unix均可以使用如下命令建立controller:

cd 個人/laravel根目錄
php artisan make:controller HelloController

若是返回相似... controller created successfully... 說明controller建立成功,這時候查看/app/Http/Controllers你會發現這個目錄多了一個文件HelloController

固然你能夠手動建立Controller,但通常狀況下用命令徹底能夠知足需求。

這時HelloController的內容是這樣的:

...

class HelloController extends Controller
{
    public function index()
    {
    
    }
    
    ...
}

能夠將全部的方法刪除,這些方法是artisan爲咱們建立的(但我好像歷來不領情):

...

class HelloController extends Controller
{

}

建立一個方法sayHello:

...

class HelloController extends Controller
{
    public function sayHello($name)
    {
        return 'Hello' . $name . '.';
    }
}

這時的路由規則應爲:

Route::get('hello/{name}', 'HelloController@sayHello');

地址欄傳參:localhost:8888/hello/LiMing

1

有同窗問,若是想讓姓名成爲可選項,也就是若是有姓名就輸出"Hello + 姓名.",但若是沒有姓名就直接輸出"Hello there."要增麼作呢?
在Laravel中能夠這麼幹:

// 路由文件
Route::get('hello'/{name?}', 'HelloController@sayHello');

// 控制器
...

public function sayHello($name=null)
{
    if(!$name)
        return 'Hello there.';
    else
        return 'Hello ' . $name;
}

...

無恥硬廣進

無恥硬廣出

有問題請在下方評論,/撒花~

教程目錄

相關文章
相關標籤/搜索