PHP解决checkbox选中问题

<?php foreach ($goodsTag as $k=>$v):?>
        <?php if ($v['Type'] == \common\models\GoodsTag::TYPE_MEDIA):?>
          <a class="tag-sel <?= in_array($v['Id'],$tags)?'selected':''?>" href="<?= Url::toRoute(['/mall/detail/index','tagIds'=>in_array($v['Id'],$tags)?implode(',',array_unique(array_diff(array_merge(explode(',',Yii::$app->request->get('tagIds','')),[$v['Id']]),[$v['Id']]))):implode(',',array_unique(array_merge(explode(',',Yii::$app->request->get('tagIds','')),[$v['Id']])))]) ?>"><?= $v['TagName']?></a>
        <?php endif;?>
      <?php endforeach;?>

url中显示:http://www.xiaolutg.com/mall/detail/index?tagIds=1,2
(其中tagIds参数传多个值。思路:将选中的标签以数组形式存起来,然后数组转化为字符串显示在url栏中。其中步骤:
1.将选中的标签转为数组格式,用的函数explode(separator,string),
2.连续勾选标签时追加到此数组中,用array_merge(arr1,arr2),
3.选中了就会有不选中,点击选中的就应该转为未选中,此时应该去掉选中array_diff(arr1,arr2),
4.为避免数据重复array_unique(arr),但是这里好像没啥用处,5.最后将数组转为字符串implode(separator,array)就可以放到url中啦) 。
大功告成,是不是比js更方便啊。checkbox选中样式只要判断标签的id是不是在url中tagIds这个数组里,就可以啦(当然必须先把这个字符串再转为数组就OK啦),还有我们每选中一个标签都属于新页面打开哦,因为url有变化啦。。。
如下图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/misslee123456/article/details/85324615