---
# System prepended metadata

title: Controller 控制器

---

# Controller 控制器


傳值程式碼

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(路由名稱) }}
發表於  HackMD
 302
讚賞 收藏 訂閱