2016-04-06 33 views
1

'daki bir kaynağın her bir yöntemine ayrı bir katman yazılımı atayım Projem için ACL Yöneticisi olarak Zizaco/entrust laravel paketini kullanıyorum.laravel

ben böyle yapmak gerektiğini ve ara katman üzerinden bir rota grubuna sınır erişimi için ona bir rol (veya izin) atamak biliyoruz:

Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() { 
    .... 
}); 

Ama farklı ayrı izin atamak istediğiniz Bir kaynak denetleyicisinin yolları (yöntemleri).

nasıl yani bütün kaynak için ama her denetleyici yöntemi için bunu uygulayamaz ki biliyoruz:

Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() { 
     Route::resource('/post', ['middleware' => ['permission:manage-posts'], 'uses' => 'PostController']); 

    }); 

ben ilgili yönteme bu izni assing istiyorum:

'post-create' => public function create() 
'post-edit' => public function edit() 

ve yakında.

cevap

2

Sen kontrolörün yapıcı içinde ara katman atayabilirsiniz:

class Foo extends Conroller 
{ 
    public function __construct() { 

     $this->middleware('post-create', ['only' => ['create']]); 

     $this->middleware('post-edit', ['only' => ['edit']]); 
    } 
} 
+0

Birçok modelleri vardır ve her bu farklı yöntemleri var bireysel kaynaklara sahip. Her yöntem için ara katman yazılımı ekledim mi? başka basit ve genel bir çözüm yok mu? –

+0

@ A.B.Developer Middlewares diğer sınıflar gibi tek bir sorumluluğa sahip olmalı, birden fazla yöntem için kullanılabilir bir ara katman oluşturmak için bazı karmaşık koşullu kod yazabilir ancak daha sonra korumak ve genişletmek zorlaşır. –

+0

iyi bir cevap gibi görünmüyor. Bu yöntem her yöntem için bir ara katman yazılımı kullanmalıdır. Geliştirici için çok fazla olacak –