--- tags: laravel --- # Controller 控制器(快速入門) ![](https://i.imgur.com/ejUgb1X.png) ## 傳值程式碼 ``` <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HomeController extends Controller { public function signup(Request $request , $id , $course) { $data = ['id' => $id , 'course' => $course , 'url' => '<a href="http://goblinlab.org">http://goblinlab.org</a>']; $url = '<a href="http://goblinlab.org">http://goblinlab.org</a>'; //作法1 利用view()的第2參數來傳 return view('signup',$data); //作法2 利用with()方法來傳 return view('signup')->with($data); //作法3 搭配compact()來建立陣列 return view('signup',compact('id','course','url')); } } ``` ## 視圖接收參數寫法 ``` 跳脫程式內容來進行輸出 {{ $id }} <br> 會渲染程式內容並執行來進行輸出 {!! $code !!}<br> ``` ## 路由的寫法 ``` //8.x以上版本需補上命名空間 Route::get('/users/{id}/courses/{course}', 'App\Http\Controllers\HomeController@signup'); ``` ## 被資源控制器所處理的Action ![](https://i.imgur.com/8D8VLK6.png) ## 建立帶resources方法的控制器 php artisan make:controller ItemController --resource --model=Item --resource 表示希望順便生成7個CRUD方法 --model 表示希望順便加入載入Model的程式碼,可自己加 ## 建立resources 路由 ``` //建立單一表格resource Route::resource('items','App\Http\Controllers\ItemController'); ``` 第一參數為路徑前綴,通常與關連表格名稱相同 第二參數為所接手的控制器名稱 ``` //建立多個表格的resource Route::resources([ 'items' => 'App\Http\Controllers\ItemController', 'posts' => 'App\Http\Controllers\PostController', ]); ``` ## 建立帶api resources方法的控制器 php artisan make:controller PostController --api --model=Post ## 建立api resources 路由 Route::apiResource('posts','App\Http\Controllers\PostController'); ## 保護控制器裡的Action ``` class HomeController extends Controller { public function __construct(){ //此控制器的所有方法都需要有登入才能訪問 $this->middleware('auth'); //此控制器的store()需要有登入才能訪問 $this->middleware('auth')->only('store'); //除index()外,此控制器的其他方法需要有登入才能訪問 $this->middleware('auth')->except('index'); } ``` ## 在路由檔內加入中介層保護 ``` //此路由需要登入才能訪問 Route::get('/users/{id}/courses/{course}', 'App\Http\Controllers\HomeController@signup')->middleware('auth'); ``` ## 生成網址 ``` {{ url(路由路徑) }} {{ route(路由名稱) }} ```