Как сделать, чтобы некоторые шаблоны лезвий были доступны для одного пользователя, но не для других - PullRequest
0 голосов
/ 03 ноября 2019

Допустим, у меня есть 9 шаблонов blade-серверов (p1.blade.php до p9.blade.php) и 3 пользователя (member1, member2 и member3)

member1 can only access p1.blade.php, p2.blade.php, p3.blade.php
member2 can only access p4.blade.php, p5.blade.php, p6.blade.php
member3 can only access p7.blade.php, p8.blade.php, p9.blade.php

Как я могу это сделать?

1 Ответ

2 голосов
/ 03 ноября 2019

Что вы подразумеваете под доступом? В конечном счете, именно вы сами решаете, какие шаблоны будут отображаться в ваших представлениях.

Вы можете выборочно выбирать некоторые условные выражения, например @can или @if перед @include, или использовать @includeWhen

Включая вложенные представления

Если вы хотите @include представление в зависимости от заданного логического условия, вы можете использовать директиву @includeWhen:

@includeWhen($boolean, 'view.name', ['some' => 'data'])

Например:

<ul id="menu">
  @includeWhen($user->role == 'Admin', 'menu.admin', ['data' => $data])
  @includeWhen($user->role == 'Moderator', 'menu.moderator', ['data' => $data])
  @includeWhen($user->role == 'User', 'menu.user', ['data' => $data])
</ul>

Проверка ролей на самом деле не лучшая практика. Тот же пример с политиками

<ul id="menu">
  @includeWhen($user->can('admin'), 'menu.admin', ['data' => $data])
  @includeWhen($user->can('moderate'), 'menu.moderator', ['data' => $data])
  @includeWhen($user->can('post'), 'menu.user', ['data' => $data])
</ul>
...