QQ扫一扫联系
                            
                        
后台如何实现select 多选,如下图

PHP8.1版本、MySQL 5.7.26、系统版本 win10等
1
在文件 vendor/modstart/modstart/src/Field/AbstractField.php 增加
line 184 private $fluentAttributes = [] 内 增加 'multiple', line 203 增加 private $multiple = false; line 48 增加 * form模式:多选 * @method AbstractField|mixed multiple($value = null)
2
在文件 vendor/modstart/modstart/views/core/field/select.blade.php 中
把
<select class="form" name="{{$name}}"
    @if($selectSearch) lay-search @elseif($selectRemote) @else lay-ignore @endif
    @if($selectRemote) lay-remote="{{$selectRemote}}" lay-init-value="{{$value}}" @endif
    @if($readonly) disabled @endif
    @if(!empty($onValueChangeJsFunction))
        onchange="window.{{$id}}_change(this);"
    @endif
    >
    @foreach($options as $k=>$v)
        <option value="{{$k}}" @if($k==$value) selected @endif>{{$v}}</option>
    @endforeach
</select>
改为
@if($multiple === false)
    <select class="form" name="{{$name}}"
        @if($selectSearch) lay-search @elseif($selectRemote) @else lay-ignore @endif
    @if($selectRemote) lay-remote="{{$selectRemote}}" lay-init-value="{{$value}}" @endif
    @if($readonly) disabled @endif
    @if(!empty($onValueChangeJsFunction))
    onchange="window.{{$id}}_change(this);"
    @endif
    >
        @foreach($options as $k=>$v)
        <option value="{{$k}}" @if($k==$value) selected @endif>{{$v}}</option>
    @endforeach
    </select>
@elseif($multiple === true)
    <!-- 引入 jQuery -->
    <script src="/asset/select2/jquery-3.6.0.min.js"></script>
    <!-- 引入 Select2 CSS -->
    <link href="/asset/select2/select2.min.css" rel="stylesheet" />
    <!-- 引入 Select2 JavaScript -->
    <script src="/asset/select2/select2.min.js"></script>
    <select class="js-example-basic-multiple" name="{{$name}}" multiple="multiple" style="display: none;">
        @foreach($options as $k=>$v)
         <option value="{{$k}}" @if($k==$value) selected @endif>{{$v}}</option>
         @endforeach
    </select>
<script>
    $(document).ready(function () {
        $('.js-example-basic-multiple').select2();
        $('div.layui-unselect.layui-form-select').css({'display': 'none'});
        $('.select2-selection__rendered').on('DOMSubtreeModified', function() {
            var inputVal = [];
            $('ul li').each(function() {
                var str = $(this).children("span").attr("id");   
                if (typeof str !== "undefined") {
                    var matches = str.match(/-(\d+)$/);
                  inputVal.push(matches[1]);
                }
            });
        $('input[name="catIds"]').val(inputVal);
        $('input[name="catId"]').val(inputVal[0]);
        });
    });
</script>
@endif
3
在module/Cms/Admin/Controller/ContentController.php 增加
$form->select('catIdMult', '栏目')->options($catOptions)->multiple(true);
4
在后台增加产品内容
出现如下报错

多选存储是需要序列化的,select目前暂不支持多选。可以使用checkbox