Динамическое добавление разрешения с помощью Sentry в Laravel

Я заполнил свою таблицу разрешений для хранения таких значений, как «pages.add», «pages.edit» и т. д. При создании группы я заполняю эти разрешения флажками. При отправке я перебираю опубликованные значения этих флажков и помещаю их в массив. Затем я создаю группу следующим образом:

хранилище открытых функций () { $ validation = new CreateGroupValidator;

    if ($validation->passes()) {
        try {
            // Create the group
            $permissions = Input::get('permissions');
            $pers=array();
            foreach($permissions as $p)
            {
                $pname=Permission::find($p)->name;
                array_add($pers,$pname,'1');
            }

            $group = Sentry::createGroup(array(
                'name'        => Input::get('name'),
                'permissions' => $pers
            )); 

            return Redirect::route('admin.groups.index');
        } 
        catch (\Cartalyst\Sentry\Groups\GroupExistsException $e)
        {
            Notification::error('A group with same name already exists.');
        }
    }

    return Redirect::back()->withInput()->withErrors($validation->errors);
}

Я вижу, что значения были заполнены в массиве. Тем не менее часовой не загрузит эти разрешения в таблицу групп. Что случилось? Предложения, пожалуйста.


person sangam    schedule 15.04.2014    source источник


Ответы (1)


Как я использую свои флажки в HTML, выглядит так:

<input type="checkbox" name="perms[page.edit]" value="1"> Allow
<input type="checkbox" name="perms[page.add]" value="1"> Allow

Вот как я реализовал свою функцию обновления, но и мое создание, и обновление используют аналогичный код.

$input = Input::get('perms');
$c = [];
foreach ($input as $k => $p) {
    $c[$k] = $p;
}
// Find the group using the group id
$group = Sentry::findGroupById(1);
// Update the group details
$group->name = Input::get('name');
$group->permissions = $c;
// Update the group
$group->save();

Надеюсь это поможет.

person dcrawkstar    schedule 17.06.2014