Yii2 select2 选择了一个值 2 和更多时间
Posted
技术标签:
【中文标题】Yii2 select2 选择了一个值 2 和更多时间【英文标题】:Yii2 select2 selected one value 2 and more time 【发布时间】:2022-01-02 03:35:21 【问题描述】:我有选择2
return $this->form->field($this->model, 'observers')
->widget(Select2::className(),
[
'data' => Tasks::getAllStaffsGroupOffice(),
'disabled' => !$this->can['changeObservers'],
'options' => [
'multiple' => true,
'value' => ArrayHelper::map($this->model->observers, 'staff_id', 'staff_id'),
'placeholder' => Yii::t('tasks_forms', 'FORM_PLACEHOLDER_CHOOSE'),
'class' => 'hiddenInput'
],
'pluginOptions' => [
'allowClear' => true,
'closeOnSelect'=> false,
],
'pluginLoading' => false,
]);
Tasks::getAllStaffsGroupOffice()
按办公室获取用户数组。示例 ->
array:4 [▼
"main office" => array:1 [▼
2 => "123 123"
]
"office 1" => array:3 [▼
3 => "staff_1"
6 => "staff_2"
2 => "123 123"
]
"office 3" => array:2 [▼
4 => "staff_3"
3 => "staff_1"
]
"office 2" => array:2 [▼
5 => "staff_4"
3 => "staff_1"
]
]
select2 值示例 -> array (2 => "2")
结果,小部件本身的显示看起来像这样 select2 value
如何让在2个及以上办公室的员工只显示1次?
【问题讨论】:
【参考方案1】:我认为您应该过滤您的员工列表,然后将其传递给 Select2 小部件。我创建一组独特的员工的方法是这样的:
$allStaffsGroupOffice = [
"main office" => [
2 => "123 123"
],
"office 1" => [
3 => "staff_1",
6 => "staff_2",
2 => "123 123"
],
"office 3" => [
4 => "staff_3",
3 => "staff_1"
],
"office 2" => [
5 => "staff_4",
3 => "staff_1"
]
];
$repeatedStaff = [];
$newUniqueList = [];
foreach ($allStaffsGroupOffice as $office => $staffList)
foreach ($staffList as $staffId => $staffName)
if (!in_array($staffId, $repeatedStaff))
$repeatedStaff[] = $staffId;
$newUniqueList[$office][$staffId] = $staffName;
$newUniqueList
将是您的新阵列,其中包含拥有独特员工的办公室。
【讨论】:
问题是同一员工可以出现在 2 个或多个不同的办公室,在 select2 小部件中,员工应该显示在它所在的那些办公室。这样您就可以从任何办公室中选择它以上是关于Yii2 select2 选择了一个值 2 和更多时间的主要内容,如果未能解决你的问题,请参考以下文章
Yii2 - 使用 Ajax 加载为 Select2 插件设置值
如何从 Select2 Widget Yii2 将多个值保存到数据库