首頁 > 後端開發 > php教程 > Laravel 514 + Bootstrap 334 筆記四:Laravel 控制器

Laravel 514 + Bootstrap 334 筆記四:Laravel 控制器

WBOY
發布: 2016-07-30 13:31:41
原創
974 人瀏覽過

在前文中,我們把使用者的請求回應邏輯放在路由中處理,實際情況下這不切實際,也沒有前方程式碼那麼簡單。

而大部分情況下,使用者的請求操作是放在Controller中處理的(這不包含商業處理邏輯)。

Laravel 的所有控制器都是在 app/Http/Controllers 目錄中。

1 建立簡單的控制器

1.1 無參數的控制器

在目錄app/Http/Controllers 目錄中新檔案HomeController.php,程式碼如下:

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class HomeController extends Controller {
    public function hw()
    {
        return view(&#39;hw&#39;);
    }
}
登入後複製

在resources/views 下新建內容如下:
<html>
<body>
Hello World!
</body>
</html>
登入後複製

修改 routes.php,修改後的程式碼如下:
<?php

Route::get(&#39;/&#39;, function () {
    return view(&#39;welcome&#39;);
});

Route::get(&#39;/hw&#39;, &#39;HomeController@hw&#39;);
登入後複製

開啟瀏覽器存取:http://localhost:801/hw,如下圖示:


1.2 控制器向視圖傳遞參數

當Controller需要向View傳遞參數時,是這樣的,修改控制器的hw方法:

    public function hw()
    {
        return view(&#39;hw&#39;,[&#39;name&#39;=>'CBW']);
    }
登入後複製
修改hw.php視圖程式碼:
<html>
<body>
[<?php echo $name; ?>],您好!
</body>
</html>
登入後複製
再次造訪如下 :


1.3 控制器從路由讀取參數並傳遞

當控制器需要從路由獲取參數時,是這樣的,修改上例示的路由代碼段:

Route::get('/hw/{name}', 'HomeController@hw');
登入後複製
修改控制器的hw方法:
    public function hw($name)
    {
        return view('hw',['name'=>$name]);
    }
登入後複製
接著再造訪:http://localhost:801/hw/calvin,如下圖示:


2 路由器深入

2.1 控制器和命名空間

一般情況下,一個應用系統將由多個子項目組成,比如一個網站有前台和後台,前台有新聞功能用於閱讀,後台有新聞功能用於管理。

現在,我們假設開發一個Web系統,包含兩個模組:一般使用者模組(Visit)和系統管理模組(Manage)。

A.在app/Http/Contollers 目錄中分別新建兩個模組的控制器子目錄:Visit、Manage;

B.在resources/views 下建立兩個子目錄:Visit、Manage,並在Visit下建立子目錄:Home;

C.把上例建立的HomeController 移到上一步新建的Visit 中。修改後的程式碼如下:

<?php namespace App\Http\Controllers\Visit;

use App\Http\Controllers\Controller;

class HomeController extends Controller {
    public function hw($name)
    {
        return view(&#39;Visit.Home.hw&#39;,[&#39;name&#39;=>$name]);
    }
}
登入後複製

D.修改routes.php程式碼段為:

Route::get('/hw/{name}', 'Visit\HomeController@hw');
登入後複製
E.把視圖檔案hw.php移到resources/views/Visit/Home 下;
現在,再次造訪:http://localhost :801/hw/calvin,依然是正確的。

2.2 控制器中間件

在前文中我們已經示範了中間件的使用,再回顧一下上文的例子:

Route::get('/user/{age}', ['middleware' => 'my', function ($age) {  
    return '用户年龄:'.$age;  
}]);  
登入後複製

事實上我們也可以在控制器的構造函數中處理:
class UserController extends Controller {
    public function __construct()
    {
        $this->middleware('my');
    }
}
登入後複製

另外,還有隱式控制器、RESTful、路由快取等等,後文再繼續補充。

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了Laravel 514 + Bootstrap 334 筆記四:Laravel 控制器,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板