我是Laravel和Vue的新手,需要帮助实现Vue-Multiselect。
我不知道如何将实际选项传递给选择。
我的vue文件:
<template>
<div class="dropdown">
<multiselect
:selected.sync="selected"
:show-labels="false"
:options="options"
:placeholder="placeholder"
:searchable="false"
:allow-empty="false"
:multiple="false"
key="name"
label="name"
></multiselect>
<label v-show="showLabel" for="multiselect"><span></span>Language</label>
</div>
</template>
<script>
import { Multiselect } from 'vue-multiselect';
export default {
components: { Multiselect },
props: {
options: {},
placeholder: {
default: 'Select one'
},
showLabel: {
type: Boolean,
default: true
},
selected: ''
}
};
</script>
我的刀片文件:
<div class="form-group">
<drop-down
:options="{{ $members->list }}"
:selected.sync="selected"
:show-label="false"
></drop-down>
</div>
在我的控制器方法中,我尝试了一些方法:
1
public function edit($id)
{
....
$members_list = Member::orderBy('member_first_name')->pluck('member_first_name', member_id');
return view('businesses.edit', compact('members_list'));
}
我收到了这个错误: [Vue警告]:无效道具:道具类型检查失败&#34;选项&#34;。预期的数组,得到了对象。 (见组件:)。
2.我试过了:
$members = Member::orderBy('member_first_name')->pluck('member_first_name', member_id');
$members_list = $members->all();
return view('businesses.edit', compact('members_list'));
我收到了这个错误: htmlspecialchars()期望参数1为字符串,给定数组(查看:C:\ wamp \ www \ ccf.local \ resources \ views \ _business \ edit.blade.php)
3
$members = DB::table('members')
->orderBy('member_first_name', 'asc')
->get();
$members_list = array();
foreach($members as $mem) {
$members_list[$mem->member_id] = $mem->member_first_name;
}
我收到了这个错误:htmlspecialchars()期望参数1为字符串,给定数组(查看:C:\ wamp \ www \ ccf.local \ resources \ views \ _business \ edit.blade.php)
所以我需要帮助两件事:
如何组合member_first_name和member_last_name字段,以便我可以获得以下选项:
选项值=&#34; member_id&#34; option text = member_first_name member_last_name
谢谢
答案 0 :(得分:4)
在laravel {{ }}
内部使用prop绑定时,尝试输出转义的转义形式。
你需要的是一个javascript数组。如果$members_list
返回一个似乎由其他代码指示的集合,请尝试
<drop-down
:options="{{ $members_list->toJson() }}"
:selected.sync="selected"
:show-label="false"
></drop-down>
至于您的控制器,这将有助于
$members = DB::table('members')
->orderBy('member_first_name', 'asc')
->get();
$members_list = $members->map(
function($member) {
return [
"value" => $member->member_id,
"label" => $member->member_first_name. " ". $member->member_last_name
];
}
);
Laravel Collections有一个很好的函数选择,有助于操作数据,当你转换为Json时,会将你的成员数组映射到{ value: "", label: "" }
的结构。
最后不要忘记在vue中设置你的道具绑定。
props: {
options: {
type: Array,
default: function() {
return [];
}
},...
}
这应该让你去。