我正在尝试创建一个选择,以便稍后在ajax中发送选定的值,我搜索了如何执行此操作,但我看到大多数情况下选择必须用数据库中的数据填充,但情况并非如此。我只需要用户选择两个值,我至少在视觉上成功地创建了营地
我设法用这段代码做到了:
[
'attribute' => 'warehouse',
'label' => Yii::t('wms', 'Almacen'),
'vAlign' => 'middle',
'value' => function ($model) {
return Html::dropDownList('w.id', 'name',
['1' => 'Sym 1',
'2' => 'Sym 2',
],
['id' => 'Almacen', 'class' => 'form-control'
]);
},
'format' => 'raw'
],
但是在ajax上选择它时,它不接受该值:
$(keys).each(function(i, key) {
var order = parseInt($('tr[data-key=' + key + ']').find('.warehouse').html());
units.push({
key: key,
order: warehouse,
value: $('#pa-'+key).val()
})
});
这是一个快速修复,但就我看来,如果我从数据库调用它,则只能从 gridview 发送数据,但我可能是错的,对 yii2 有点陌生,这里有很多方法可以做事。这不是一个搜索框,而是一个项目列表,人们可以在其中进行选择并将数据发回
首先,确保您的下拉列表在 GridView 中正确生成。您的代码对于这部分来说看起来不错,但如果 GridView 中有多行,您可能希望确保每个下拉列表都有唯一的 id 属性,对吗?
尝试将下拉列表的 id 修改为每行唯一:
'value' => function ($model) {
return Html::dropDownList('w.id', 'name',
['1' => 'Sym 1', '2' => 'Sym 2'],
['id' => 'Almacen-' . $model->id, 'class' => 'form-control']
);
},
您也可以稍微更改一下 JavaScript,也许您需要调整选择器以正确定位下拉列表。
$(keys).each(function(i, key) {
var warehouse = $('#Almacen-' + key).val();
units.push({
key: key,
warehouse: warehouse,
value: $('#pa-' + key).val() // Ensure this is correct
});
});
您应该尝试确保您的 Ajax 请求正确设置以将单位数组发送到您的服务器。验证数据结构是否匹配。
同样在服务器端,尝试查看是否正确处理传入的数据。这将取决于您的 Yii2 控制器的操作方式。
并使用 JavaScript 中的控制台日志和 Yii2 应用程序中的调试日志来跟踪可能发生问题的位置。