我在laravel 5.2中使用x-editable。我想从data-source存储相应值的文本。我只能将值存储在数据库中。
我的观点:
<label>Course:</label><a href="#" id="course" data-name="course" data-type="select" data-value="" data-pk="{{Auth::user()->id}}" data-source="{1: 'B.tech', 2: 'M.tech'}" data-title="course" data-url="{{route('course')}}"></a>
控制器:
public function course(Request $request)
{
$account = new Account();
$name = $request->get('name');
$value = $request->get('value');
$request->user()->accounts()->update([$name => $value]);
return redirect()->back();
}
答案 0 :(得分:3)
默认情况下,X-Editable创建$hotel->place
,其中源对象键作为选项值,源值作为选项显示文本。当然,当发送请求时,会发送值(在您的情况下为1或2)而不是文本。
但是如果源是一个数组,则该值将与文本相同。所以,你可以做到
select
如果您无法或不想更改原始数据源,而不是将源设置为属性,则可以在初始化组件时执行此操作:
<a ... data-type="select" data-source="['B.tech', 'M.tech']"></a>
答案 1 :(得分:0)
我有同样的问题。关键是我想将值和显示的文本分开,但是在选定选择之后,出于某些显示需要,我仍然需要获取“显示的文本”。 (假设我要创建一个模式窗口,确认选择的文本,而不是值)。我们如何找回这些文字? 之前的答案是告诉我们:不要将文本和值分开。 好吧,我确实需要将它们分开。
这是我可以设法建立的解决方案,这要归功于K Scandrett在其他地方的回答。 我正在寻找“ onSave”事件中的值以进行优化。
$('.MyTable').on('save', function(e, params) {
source = $(this).data('editable').input.sourceData
var selected = $.fn.editableutils.itemsByValue(params.newValue, source);
if (selected.length) {
console.log(selected[0].value);
console.log(selected[0].text);
}
});
甚至可以直接在“成功”选项上进行设置:
$('.MyTable').editable({
...
success: function(responsetxt, newValue) {
source = $(this).data('editable').input.sourceData;
var selected = $.fn.editableutils.itemsByValue(newValue, source);
if (selected.length) {
console.log(selected[0].value);
console.log(selected[0].text);
}
},
…
});