我尝试在Laravel 5.6中使用Form :: select,但是当我进入“编辑页面”时,在select中,有一些选项包含对象Model的所有数据,而不是常规字段。
我有一个与ManyToMany有标签模型的关系的游戏模型。
在游戏控制器的编辑功能中
public function edit($item)
{
$tags = Tag::all();
return view('megadmin.games.edit', compact('item', 'tags'));
}
在我的表单刀片中:
{!! Form::select('tags', $tags, array_pluck($tags, 'id_tag','name'), ['class' => 'form-control'])!!}
结果如下:
我只想要带有数据的常规选择/选项,我想在游戏表格中检索与游戏相关的模型标签。
感谢您的帮助^^
答案 0 :(得分:0)
控制器
public function edit($item)
{
$tags = Tag::all();
$goodTag = $item->tags()->first()->id;
//here assuming `$item` is your Game object and
//you have ManyToMany relation with tags with `tags` function in game model
//lots of assuming
return view('megadmin.games.edit', compact('item', 'tags', 'goodTag));
}
查看
{!! Form::select('tags', array_pluck($tags,'name', 'id_tag'), $goodTag, ['class' => 'form-control'])!!}
这是Laravel形式选择源代码https://www.luckyryan.com/2013/08/25/testing-spring-mvc-controllers/
和array_pluck
https://github.com/illuminate/html/blob/master/FormBuilder.php#L393
答案 1 :(得分:0)
我假设您正在使用表单模型绑定,因此可以执行以下操作:
在您的游戏模型中,仅为您创建一个新方法,用于表单模型绑定:
class Game extends Model
{
use FormAccessible;
public function tags()
{
return $this->belongsToMany(Tag::class);
}
public function formTagsAttribute()
{
return $this->tags()->pluck('id_tag');
}
}
在您的控制器中:
public function edit($item)
{
$tags = Tag::pluck('name', 'id_tag');
return view('megadmin.games.edit', compact('item', 'tags'));
}
您认为:
{!! Form::model($game, [$attributes]) !!}
{!! Form::select('tags', $tags, null, ['class' => 'form-control']) !!}
.
.
.
{!! Form::close() !!}