2016-12-10 4 views
0

私は異なる役割のビューを持っているアプリケーションを開発しています。ラーバル開発構造

たとえば、私は5つのフィールドを持つフォームを持っています。送信時には、役割1には3つのフィールド、役割5にはすべてのフィールドが使用できます。

ここでは、図形または表を使用してフォームデータを表示していますが、一部のロールでは5列またはフィールドを表示し、他のロールではフィールドフォームを少なくするオプションがあります。

今、コントローラの各アクションで他のロジックが役割を決定し、適切なデータをビューに渡している場合は、これをどのように管理しますか?私が知りたいのですが。

「私にいくつかのコードを表示:(」

EDIT言って前に完全にお読みください:私ができるビューで、 1より多くの質問、ユーザークラスがあるとし、型クラスとの1対1の関係を持っているが操作を行います。

{{ Auth::user()->type->key }} 

それとも

{{ Auth::user()->as_member->claims->sum('amount_claimed') }} 

のようないくつかの複雑なもの。これは、複雑な関係である、メンバーとしてユーザーが多くのクレームがあり、私はここでそれを合計しています。コントローラでこれを行い、それを値として渡す方が良いでしょうか?

+1

を参照し、リポジトリに行うとさらに良いです。 – aimme

+0

2番目の質問を削除して2番目の投稿に投稿できますか? – goto

答えて

0

一般的に言えば、ユーザーと役割は多対多の関係を共有します。ユーザーは多くの役割を持つことができ、多くのユーザーが役割を共有できます。 3つのデータベーステーブルが
1ユーザ
2ロール
3 ROLE_USER(ピボットテーブル)

そして関係が

class User extends Model 
{ 
    public function roles() 
    { 
     return $this->belongsToMany('App\Roles'); 
    } 

    //suppose you currently want to assign each user only one role 
    //however also want to provision multiple roles for user in future 
    //then you can define a virtual/calculated attribute to your model 
    //to simplify usage considering each user has only one role 

    public function getRoleAttribute() 
    { 
     return $this->roles[0]->name; //name is a field on the roles table 
    } 

    protected $appends = ['role']; //to ensure that the calculated attribute is available to ajax/json/api requests as well 

} 


class Role extends Model 
{ 
    public function users() 
    { 
     return $this->belongsToMany('App\User'); 
    } 
} 
としてモデルで定義することができるが要求されていることを実現するために

サンプルデータとして3人のユーザーがいるとします。

ユーザー1のロールは「ユーザー」

User2がユーザー3はロール「管理」

を持って

今、あなたは

<h4>Current user is {{auth()->user()->name}} having a role of {{auth()->user()->role}}</h4> 

<div class="example-form"> 
    <h4 class="all">Visible to all - User1, User2, User3</h4> 
    @if((auth()->user()->role ==='Manager') || (auth()->user()->role ==='Admin')) 
     <h4>Visible to Manager and Admin only - User2 and User3</h4> 
    @endif 
    @if(auth()->user()->role === 'Admin') 
     <h4>Visible only to Administrator - User3</h4> 
    @endif 
</div> 

のようなサンプル・ビュー・ホープと機能性をテストすることができ、これはあなたが目指しているものであるロール「Manager」を持っています - 私の理解は大丈夫です。

ただし、Laravel 5.2を使用していると言われているので、Laravel 5.2が提供するすぐに使用できる認証を使用する方がよいでしょう。

は、コントローラではなく、ビューのロジックを行うには、より良いAuthorization documentation

関連する問題