获取相关模型属性以填充 multi-select
Getting relating model attributes to populate multi-select
我正在使用 Laravel 5.3、Entrust for permissions, LaravelCollective for Form functionality and Chosen 来操作 select 个框。
我已将我的表单绑定到一个模型并且我的表单正在正确填充,但是我正在努力使用与该角色(模型)相关的值填充多 select
我正在利用 Entrust 的内置关系。我想让与角色关联的权限在多 select 中显示为 selected 值。
$role->permissions->name 之类的东西,但这似乎不起作用。表单参数中的空值是默认值,但我似乎无法让它显示我想要的任何内容。
这是我的表格:
{!! Form::model($role, ['method' => 'PATCH', 'route' => ['settings.access.update_role', $role->id]]) !!}
<div class="form-group">
{!! Form::label('Name') !!}
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div>
{!! Form::date('name', $role->name, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Display Name') !!}
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div>
{!! Form::date('display_name', $role->display_name, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Description') !!}
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div>
{!! Form::date('description', $role->description, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Permissions') !!}
<script type="text/javascript">
$(document).ready(function() {
$(".permissions").chosen({width: "100%"})
});
</script>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div>
{!! Form::select('permissions[]', $permissions, null, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!}
</div>
</div>
<div class="form-group">
<br/>
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-success" type="submit" name="add_user">Update</button>
</span>
</div>
</div>
{!! Form::close() !!}
这是我的表格中有问题的部分:
<div class="form-group">
{!! Form::label('Permissions') !!}
<script type="text/javascript">
$(document).ready(function() {
$(".permissions").chosen({width: "100%"})
});
</script>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div>
{!! Form::select('permissions[]', $permissions, null, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!}
</div>
</div>
这是我的控制器函数,它将信息发送到表单:
public function edit_role($id)
{
$permissions = Permission::pluck('name', 'id');
$role = Role::where('id', $id)->first();
return view('settings.access.edit', compact('role', 'permissions'));
}
好吧先生试试这个...
return view('settings.access.edit', compact(['role', 'permissions']));
我设法解决了我的问题,尽管方式有点笨拙。
我的 edit_role 控制器现在看起来像这样:
public function edit_role($id)
{
$permissions = Permission::pluck('name', 'id');
$role = Role::where('id', $id)->first();
$role_permissions = Role::with('perms')->get();
$items = array();
foreach($role_permissions as $role_permission)
{
foreach($role_permission->perms as $permission){
$items[] = $permission->id;
}
}
return view('settings.access.edit_role', compact('role', 'permissions', 'items'));
}
基本上我所做的是获取与角色关联的所有权限,然后将每个权限的 'id' 转换为一个数组,然后我使用该数组('$items')来填充选择的默认值(null)如下:
<div class="form-group">
{!! Form::label('Permissions') !!}
<script type="text/javascript">
$(document).ready(function() {
$(".permissions").chosen({width: "100%"})
});
</script>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div>
{!! Form::select('permissions[]', $permissions ,$items, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!}
</div>
</div>
我正在使用 Laravel 5.3、Entrust for permissions, LaravelCollective for Form functionality and Chosen 来操作 select 个框。
我已将我的表单绑定到一个模型并且我的表单正在正确填充,但是我正在努力使用与该角色(模型)相关的值填充多 select
我正在利用 Entrust 的内置关系。我想让与角色关联的权限在多 select 中显示为 selected 值。
$role->permissions->name 之类的东西,但这似乎不起作用。表单参数中的空值是默认值,但我似乎无法让它显示我想要的任何内容。
这是我的表格:
{!! Form::model($role, ['method' => 'PATCH', 'route' => ['settings.access.update_role', $role->id]]) !!}
<div class="form-group">
{!! Form::label('Name') !!}
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div>
{!! Form::date('name', $role->name, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Display Name') !!}
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div>
{!! Form::date('display_name', $role->display_name, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Description') !!}
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div>
{!! Form::date('description', $role->description, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Permissions') !!}
<script type="text/javascript">
$(document).ready(function() {
$(".permissions").chosen({width: "100%"})
});
</script>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div>
{!! Form::select('permissions[]', $permissions, null, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!}
</div>
</div>
<div class="form-group">
<br/>
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-success" type="submit" name="add_user">Update</button>
</span>
</div>
</div>
{!! Form::close() !!}
这是我的表格中有问题的部分:
<div class="form-group">
{!! Form::label('Permissions') !!}
<script type="text/javascript">
$(document).ready(function() {
$(".permissions").chosen({width: "100%"})
});
</script>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div>
{!! Form::select('permissions[]', $permissions, null, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!}
</div>
</div>
这是我的控制器函数,它将信息发送到表单:
public function edit_role($id)
{
$permissions = Permission::pluck('name', 'id');
$role = Role::where('id', $id)->first();
return view('settings.access.edit', compact('role', 'permissions'));
}
好吧先生试试这个...
return view('settings.access.edit', compact(['role', 'permissions']));
我设法解决了我的问题,尽管方式有点笨拙。
我的 edit_role 控制器现在看起来像这样:
public function edit_role($id)
{
$permissions = Permission::pluck('name', 'id');
$role = Role::where('id', $id)->first();
$role_permissions = Role::with('perms')->get();
$items = array();
foreach($role_permissions as $role_permission)
{
foreach($role_permission->perms as $permission){
$items[] = $permission->id;
}
}
return view('settings.access.edit_role', compact('role', 'permissions', 'items'));
}
基本上我所做的是获取与角色关联的所有权限,然后将每个权限的 'id' 转换为一个数组,然后我使用该数组('$items')来填充选择的默认值(null)如下:
<div class="form-group">
{!! Form::label('Permissions') !!}
<script type="text/javascript">
$(document).ready(function() {
$(".permissions").chosen({width: "100%"})
});
</script>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div>
{!! Form::select('permissions[]', $permissions ,$items, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!}
</div>
</div>