2016-06-23 34 views
0

私は何かをしようとしていますが、それを行う方法は想像もできません。 laravelのドキュメントからLaravelコントローラのミドルウェアにパラメータを渡す方法

Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) { 
    // 
}]); 

:私はこれをやっているmiddlwareにパラメータを渡すには

。 次にハンドル関数のパラメータを取得してください...

しかし、laravelはミドルウェアの使用をコントローラの__constructに宣言することをお勧めします。だから、

...

public function __construct() { 
     $this->middleware('auth'); 
} 

しかし、私はコントローラにパラメータを渡す方法を知りません。

私は助けていただきありがとうございます。

答えて

-2

あなたはこれを行うことができ、あなたのコントローラの__constructのパラメータを取得したい場合:

class HomeController extends \BaseController 
{ 
    public function __construct() 
    { 
     $this->routeParamters = Route::current()->parameters(); 
    } 
} 
+0

彼はコントローラからミドルウェアを呼び出すときにパラメータを渡す方法を尋ねてきました。 –

+0

質問はミドルウェアにパラメータを渡すことです。 – Salar

+0

をご確認の上、https://mattstauffer.co/blog/passing-parameters-to-middleware-in-laravel-5.1 –

0

あなたは、あなたがルート上に渡しているのと同じ方法を渡すことができます。

public function __construct() { 
    $this->middleware('role:editor'); 
} 
+0

私はそれを理解できません。 "役割"はどこから来ているのですか? "role"はルート上にありません。 ありがとうございます。 – Alwitheflow

0

コントローラにミドルウェアを置かないでください。できるだけ頻繁にビジネスロジックをコントローラから外してください。

代わりに、ミドルウェアファイルを作成してください。

php artisan make:middleware MyMiddlewareDoesThings 

ここでファイル内に$handleという機能があります。

public function handle($request, Closure $next) 

public function handle($request, Closure $next, $role) 

$roleあなたはとして示さミドルウェアにURLパラメータにアクセスすることができます$editor

2

だろうあなたの例からrole:valueの値が含まれます要求し、閉鎖後の引数を追加以下:

routes.php

Route::get('/test/{id}', ['uses' => '[email protected]']); 

テストコントローラー

<?php 
namespace App\Http\Controllers; 

class Test extends Controller 
{ 

    /** 
    * Test constructor. 
    */ 
    public function __construct() 
    { 
     $this->middleware('test'); 
    } 

    public function test() 
    { 
     return 'sample'; 
    } 

テストミドルウェア

<?php namespace App\Http\Middleware; 

use Closure; 

class Test 
{ 
    public function handle($request, Closure $next) 
    { 
     dd($request->id); 

     return $next($request); 
    } 
} 

**

protected $routeMiddleware = [ 
     'auth' => \App\Http\Middleware\Authenticate::class, 
     'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
     'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
     'test' => \App\Http\Middleware\Test::class, 
    ]; 
ミドルウェアを有効にするには、あなたのKernel.phpを更新し忘れてはいけません
関連する問題