后台 -- tp多选框向后台传值,编辑的时候默认选中问题

首先说一下语法

前端要将input框的名字设置统一,然后后面跟一个 "[]"数组的标记;

后台接收数据将数据处理用的语法是input("timeid/a"); 这样就可以将前端传过来的数组进行处理;

我用的是layui框架可能有些区别

效果:  这是数据库存储选中后的效果

前端代码:

 <!-- 编辑页面 -->
   <div class="layui-form-item">
                <label class="layui-form-label">时间区间:</label>
                <div class="layui-input-block">
                    {foreach name="all" item="v" empty="$empty"}
                    <input type="checkbox" name="timeid[]" value="{$v.id}" title="{$v.begin} ~ {$v.finish}" {if $v.pitch
                        eq 1}checked {/if}><br>
                    {/foreach}
                </div>
            </div>

控制器:

    //景点/更改

    public function up()
 {

        $all = Db::name( 'time' )->order( 'begin' )->select(); //查找图二
        $scenic = Db::name( 'scenic' )->where( 'id', $up )->find(); //解析图一中的timeid
        $timeid = explode( ',', $scenic['timeid'] );//将字符串转换为数组1,2,3,4   转数组
        //-----
        foreach ( $all as $key => $value ) {
            $all[$key]['pitch'] = 0;
            //当pitch为0的时候我们就不默认选中
            for ( $i = 0; $i <count( $timeid ) ; $i++ ) {
                if ( $timeid[$i] == $value['id'] ) {
                    $all[$key]['pitch'] = 1;
                    //当pitch为1的时候我就默认选上
                }
            }
        }
        $this->assign( 'scenic', $scenic );
        $this->assign( 'all', $all );
        return $this->fetch( 'add' );
    }

时间段id:  (图一)

对应的时间表: (图二)

发布了105 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44944193/article/details/105254752