表单模型绑定laravel 5.1用于多个模型 [英] Form model binding laravel 5.1 for multiple models
问题描述
我要为laracollective的Form包中的多个对象绑定Form模型?以下内容?
Form :: model([$ user,$ vendors],array('route'=> array('user.update',$ user-> id)))
>
我在哪里可以请求此功能?
我假设您正在使用 Laravel-集体,很遗憾,您不能做这样的事情.相反,您可以尝试这样的事情:
更新
您可以在控制器中查询所有模型,并像这样组合它们:
$ user = User :: where('id',$ user_id)-> get();$ vendor =供应商::: where('user_id',$ user_id)-> get();//合并两个模型$ user = $ user-&m; merge($ vendor);//返回$ user;返回视图('admin.users.edit',紧凑型('user'))-> withTitle('编辑用户');
,然后在您的表单中这样称呼他们:
{!!形式::模型($ user [1],['route'=> ['admin.users.update',$ user],'method'=>'PUT'])!!}@include('admin.users._formEdit')< div>{!!形式::提交('保存用户',['类'=>'btn btn-primary'])!!}</div>{!!形式:: close()!!}
_formEdit.blade.php
< div class ="form-group">{!!Form :: label('first_name','First name:')!!}{!!Form :: text('user [first_name]',null,['class'=>'form-control'])!!}</div>< div class ="form-group">{!!Form :: label('last_name','Last Name:')!!}{!!Form :: text('user [last_name]',null,['class'=>'form-control'])!!}</div>< div class ="form-group">{!!格式:: label('email','Email:')!!}{!!Form :: email('user [email]',null,['class'=>'form-control'])!!}</div>< div class ="form-group">{!!形式::标签('密码','密码')!!}{!!Form :: password('password',['class'=>'form-control'])!!}</div>< div class ="form-group">{!!形式::标签(供应商名称",供应商名称")!!}{!!Form :: text('vendor_name',null,['class'=>'form-control'])!!}</div>
或其他解决方案
- 在您的用户和供应商的模型之间建立关系(一对一或一对多)示例
用户:
公共功能vendor(){返回$ this-> hasOne('App \ Vendor','user_id');}
供应商:
公共功能user(){返回$ this-> belongsTo('App \ User','user_id);}
- 像这样构建您的响应查询:
$ user = Vendor :: with('user')-> find($ user_id);
- 然后在您的视图模板中:
{!!形式::模型($ user,...)!!}小贩: {!!形式::文本('vendor_name')!!}用户:{{Form :: text('user [username]')}}{!!形式:: close()!!}
I want Form model binding for multiple objects in laracollective's Form package? Something as following?
Form::model([$user,$vendors], array('route' => array('user.update', $user->id)))
Where can I request this feature?
I assume you're using Laravel-Collective, Unfortunately you cant do something like that. instead you can try something like this :
UPDATE
you can query all your model in your controller and combine them like this :
$user = User::where('id',$user_id)->get();
$vendor = Vendor::where('user_id',$user_id)->get();
//merge two model
$user = $user->merge($vendor);
// return $user;
return view('admin.users.edit', compact('user'))
->withTitle('Edit user');
and in your form call them like this :
{!! Form::model($user[1], ['route' => ['admin.users.update', $user],'method'=>'PUT']) !!}
@include('admin.users._formEdit')
<div>
{!! Form::submit('Save user', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
_formEdit.blade.php
<div class="form-group">
{!! Form::label('first_name', 'First Name : ') !!}
{!! Form::text('user[first_name]', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('last_name', 'Last Name : ') !!}
{!! Form::text('user[last_name]', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group ">
{!! Form::label('email', 'Email : ') !!}
{!! Form::email('user[email]', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group ">
{!! Form::label('password', 'Password') !!}
{!! Form::password('password', ['class' => 'form-control']) !!}
</div>
<div class="form-group ">
{!! Form::label('vendor_name', 'vendor_name') !!}
{!! Form::text('vendor_name', null,['class' => 'form-control']) !!}
</div>
OR ANOTHER SOLUTION
- create relation between model of your User and Vendor (one-to-one or one-to-many) example
User :
public function vendor(){
return $this->hasOne('App\Vendor','user_id');
}
Vendor:
public function user(){
return $this->belongsTo('App\User','user_id);
}
- Build your response query like this :
$user = Vendor::with('user')->find($user_id);
- and then in your view template :
{!! Form::model($user, ...) !!}
Vendor: {!! Form::text('vendor_name') !!}
User: {{ Form::text('user[username]') }}
{!! Form::close() !!}
这篇关于表单模型绑定laravel 5.1用于多个模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!