---
tags: laravel
---
# Controller 控制器(快速入門)

## 傳值程式碼
```
<?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

## 建立帶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(路由名稱) }}
```