如何在Laravel中读取动态填充的复选框值以及复选框ID和值?

时间:2014-04-08 06:39:30

标签: checkbox laravel-4

我能够在视图中动态填充复选框。但我在阅读控制器中已选中的复选框时遇到问题。我想要复选框的ID,名称和值。例如,如果我有两个复选框,那么我希望每个复选框的id,name和value指示是否选中。现在我得到的只是一个只给出值1的数组。

我有观点:

<div class="control-group">
            {{ Form::label('permission-lbl', 'Permissions') }}
            <div class="controls">
                            @foreach($permissions as $p)
                {{ Form::checkbox('permissions[]',$p->id,false,array('class'=>'permission')) }}&nbsp;{{Form::label('permissions[]',$p->name)}}
                            @endforeach
            </div>
        </div>

控制器是:

public function store() {
        $validation = new CreateGroupValidator;

        if ($validation->passes()) {
            try {
                // Create the group
                $permissions = Input::get('permissions');
                if(is_array($permissions))
                {
                    //i need each checkbox's id, name and value here                    
                }

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

                Notification::success('New group was saved.');
                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);
    }

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您将从表单中收到的权限数组将采用以下格式:

// In the form [position] => Input `Value` Attribute
[permissions] => Array ( 
       [0] => 1,
       [1] => 2,
)

key是数组中元素的位置(无用),而value是所有已检查输入的属性value

在您的特定情况下,输入值属性是循环的每次迭代中$p->id的值。

请记住,您只会收到表单中已选中的复选框,如果未选中任何人,则会收到一个空数组。