在edit Menu页面里面
$form->multipleSelect('Tags')->options(Tag::all()->pluck('name', 'id'));
但是多选框中显示为空。
提交时,从数据库中可以看到,attach是成功的。但就是显示不出来。不知道是否与menu的主键为varchar类型有关?
其中
class Menu extends Model implements Sortable
{
protected $keyType = 'string';
use SortableTrait;
public $sortable = [
'order_column_name' => 'orderNum',
'sort_when_creating' => true,
];
public function Tags()
{
return $this->belongsToMany('App\Tag','menu_tags','menu_id','tag_id');
}
}
class Tag extends Model
{
public function Menus()
{
return $this->belongsToMany('App\Menu','menu_tags','tag_id','menu_id');
}
}
class MenuTag extends Model
{
protected $fillable = ['menu_id', 'tag_id'];
}
不太清楚你的问题,看看控制台有没有错误,看看网页源码的多选框的select代码部分
刚看别人的文章 #387 用了这篇文章的方法,解决了multipleSelect的显示问题。
修改后代码如下:
$form->multipleSelect('Tags')->options(function (){
$script = <<<JS
$('.Tags').select2().val({$this->Tags->pluck('id')}).trigger("change");
JS;
Admin::script($script);
return Tag::all()->pluck('name', 'id');
});
原代码:
$form->multipleSelect('Tags')->options(Tag::all()->pluck('name', 'id'));
应该是Tags 这个方法名的问题,我使用的驼峰写法修改的时候,也不会显示选着的
Most helpful comment
刚看别人的文章 #387 用了这篇文章的方法,解决了multipleSelect的显示问题。
修改后代码如下:
原代码:
$form->multipleSelect('Tags')->options(Tag::all()->pluck('name', 'id'));