Laravel - Передача массива в шаблон @can Blade - PullRequest
0 голосов
/ 21 февраля 2020

Я зарегистрировал Gate, который должен принимать массив целых чисел. Его функция - возвращать true , если в этом переданном массиве идентификатор роли пользователя . Код выглядит так:

Gate::define('access', function ($user, $access_type) {
            Log::info('-----------------------------------');
            Log::info($access_type);
            Log::info(gettype($access_type));
            Log::info('-----------------------------------');

            return in_array($user->roleid,$access_type);
});

И в моем шаблоне я поместил это ограничение следующим образом:

@can('access',[2,4])
     ... html code here ...
@endcan

Теперь я получаю эту ошибку на странице:

enter image description here

Я просмотрел журналы, чтобы проверить значение и тип переменной $ access_type , и похоже, что он получает только значение 2 .. Значение 4 отсутствует.

enter image description here

Похоже, мне нужно добавить еще одну переменную в анонимную функцию, чтобы получить значение 4. Вот так:

Gate::define('access', function ($user, $access_type1, $access_type2){
  ... some code ...
})

Когда я добавил новую переменную $ access_type2 и посмотрел журналы, я смог увидеть значение 4. enter image description here

Теперь моя проблема заключается в следующем:

  • Я не могу вручную добавить переменные в анонимную функцию, потому что передаваемые значения отличаются по номерам. Может принимать 1 значение, 2 значения, 3 значения и т. Д. c. Как можно получить значения в формате массива?

1 Ответ

2 голосов
/ 21 февраля 2020

А как насчет

Gate::define('access', function ($user, ...$access_types){
  ... some code ...
});

...$str называется оператором в PHP.

Эта функция позволяет вам захватывать переменное число аргументы функции в сочетании с «нормальными» аргументами, передаваемыми, если хотите.

Ссылка

...