如何从雄辩的模型关系中自动填充刀片字段?

时间:2014-05-03 17:11:00

标签: laravel eloquent blade

概要

我有两个模型通过数据透视表与M:M关系。 User模型和Group模型 - 许多用户可能属于多个群组 - 反之亦然。

如何自动填充刀片中的多选?此外,是否真的有必要始终实施$user->groups()->lists('id')

我当前的片段(有效 - 但IMO很讨厌)

<div class="form-group">
    {{ Form::label('groups', 'Groups') }}
    {{ Form::select('groups[]', $groups, Input::old('groups', $user->groups()->lists('id')), ['class' => 'form-control', 'multiple']) }}
</div>

1 个答案:

答案 0 :(得分:1)

要自动填充multi select中的view,您可以创建一个View::composer(),它会在您加载视图时自动将数据传递到视图。您可以使用以下内容创建这样的View :: composer:

View::composer('viewname', function($view)
{
    $user = User::with('groups')->findOrFail($userId);
    $view->with('user', $user);
});

现在每次加载该视图时都会使用以下内容:

return VIew::make('viewname');

数据($user)将传递给视图(viewname),如果您有代码填充视图中的multi-select,则会自动填充该数据。在视图中,您可以使用以下内容:

{{ 
    Form::select(
        'groups[]',
        $user->groups,
        Input::old('groups', $user->groups()->lists('id')),
        ['class' => 'form-control', 'multiple']
    )
}}