1

Laravel5.2を使用しています。だから私は役割とパーミッションAuthorizationを扱う方法について学んでいます。すべてが正常に動作します。独自のポリシー PostPolicy も作成しました。

そして今、問題に。$post データを PostsController のビューにロードし、それをブレードにロードします。

PostsController :

public function show($id)
{
    $post = Post::find($id);

    return view('posts.show', compact('post'));
}

投稿/show.blade.php :

@section('content')
<!-- begin -->
@can('hasRole', Auth::user())
    <h1>Displaying Admin content</h1>
@endcan

@can('hasRole', Auth::user())
    <h1>Displaying moderator content</h1>
@endcan

@can('hasRole', Auth::user())
    <h1>Displaying guest content</h1>
@endcan

ポリシー:

  public function hasRole($user)
    {
        // just for test
        return true;
    }

これですべてのコンテンツが返されます。

Auth::user() を文字列に変更すると @can('hasRole', Auth::user()) 、iE

@can('hasRole', 'guest')
    <h1>Displaying guest content</h1>
@endcan

この場合、何も返されません。私はLaravelが初めてなので、うまくいかないことを本当に知りません。

4

1 に答える 1