教程目錄
控制器是個小媒人。php
有時候咱們發現直接把邏輯寫到路由裏要不了多久路由就變的及其肥大。html
Route::get('/', function() { ... ... ... // (╯' ')╯╧═╧ })
這個時候怎麼辦呢?laravel
Controller到!vim
它通常是這麼幹活的:segmentfault
通知Model:你給我準備數據。windows
通知View:你給我準備模板。瀏覽器
給瀏覽器返回渲染好的模板。app
完工。spa
好比說咱們上一節課的Hello部分就可使用Controller實現。unix
Route::get('hello', 'HelloController@sayHello');
忽然簡潔好多有木有。
第一個傳參依然是地址參數,第二個傳參爲字符串,@
以前的指定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
有同窗問,若是想讓姓名成爲可選項,也就是若是有姓名就輸出"Hello + 姓名.",但若是沒有姓名就直接輸出"Hello there."要增麼作呢?
在Laravel中能夠這麼幹:
// 路由文件 Route::get('hello'/{name?}', 'HelloController@sayHello'); // 控制器 ... public function sayHello($name=null) { if(!$name) return 'Hello there.'; else return 'Hello ' . $name; } ...
無恥硬廣進
無恥硬廣出
有問題請在下方評論,/撒花~
教程目錄