Laravel / Sentry Назначение групповых разрешений из формы

Я пытаюсь обернуть голову вокруг разрешений и массивов в Sentry. Я заставляю их работать, когда я жестко их кодирую, это легко, но назначение их из формы оказывается очень … разочаровывающим, если не сказать больше. Вот функция, которая обрабатывает это:

public function postGroup(){
$name = Input::get('name');
$inputs = Input::except('name');
$permissions = array("self.view" => 1, "self.update" => 1);
foreach($inputs as $key => $value)
{
$raw_name = $key;
$name = str_replace('_', '.', $raw_name);
array_push($permissions, array($name => 1)); // The issue is here.
}
...

По сути, теперь у нас есть массив $permissions с [user.create] => 1, [user.view] => 1 и т. д. для каждого разрешения, переданного из формы. Далее, используя Sentry::createGroup Мне нужно установить разрешения на основе этого массива.

//Create the group
$group = Sentry::createGroup(array(
'name'        => $name,
'permissions' => $permissions //Doesn't work.

));

Когда я проверяю свою базу данных, я вижу это:

{"self.view":1,"self.update":1,"0":1,"1":1}

Это должно быть что-то вроде этого:

{"self.view":1,"self.update":1,"user.create":1,"user.view":1}

Таким образом, мы можем увидеть self.* одни работают нормально, но так как я звоню array_push($permissions, array($name => 1)); я делаю $permissions многомерный массив (следовательно, почему мы видим "0":1 в базе данных; это смотрит на индекс. Но я не уверен на 100%, как это исправить …

Таким образом, любое понимание обработки массива и Sentry Permissions было бы полезно. Я буду продолжать пытаться в то же время.

Заранее спасибо!

0

Решение

Я идиот … Это действительно простой ответ. Заменить:

array_push($permissions, array($name => 1)); // The issue is here.

с (и я не могу поверить, как это просто)

$permissions[$name] = 1;

чтобы избежать проблемы многомерного массива. Ле Вздох

1

Другие решения

Других решений пока нет …