一键生成的关联category(类型表) 单选下拉框展示,对样式的优化

个人一时兴起发的贴子,不是什么高技术的,主要是针对有层级分类(没有层级就没事啦),请大家不好的地方多给给建议,谢谢!:grin: :grin:

(1、下面两张图分别是---(生成时的样子:以下为“图一”)以及(修改后的样式:以下为“图二”)
image.png
image.png

(2、个人有点小小的强迫哈!看着图一感觉就是不舒服一堆。图二相对就好多了,层级分明。开始解说盗用过程。
1、我要的效果就是参照就是 category(类型表)里面的 父级id(pid)的效果。所以我要先将页面 盗用过来

<div class="form-group">
        <label for="c-pid" class="control-label col-xs-12 col-sm-2">{:__('Pid')}:</label>
        <div class="col-xs-12 col-sm-8">

            <select id="c-pid" data-rule="required" class="form-control selectpicker" name="row[pid]">
                {foreach name="parentList" item="vo"}
                <option data-type="{$vo.type}" value="{$key}" {in name="key" value=""}selected{/in}>{$vo.name}</option>
                {/foreach}
            </select>
        </div>
</div>

2、先找到现在模块需要进行修改的页面 并找出显示(示例:)

<div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
        <div class="col-xs-12 col-sm-8">
            <input id="c-category_id" data-rule="required" data-source="category/selectpage" data-params='{"custom[type]":"nav"}' class="form-control selectpage" name="row[category_id]" type="text" value="{$row.category_id}">
        </div>
</div>

然后对代码进行合并并对:id、name进行修改后如下

<div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
        <!--<div class="col-xs-12 col-sm-8">-->
            <!--<input id="c-category_id" data-rule="required" data-source="category/selectpage" data-params='{"custom[type]":"nav"}' class="form-control selectpage" name="row[category_id]" type="text" value="">-->
        <!--</div>-->
        <div class="col-xs-12 col-sm-8">
            <select id="c-category_id" data-rule="required" class="form-control selectpicker" name="row[category_id]">
                {foreach name="parentList" item="vo"}
                <option value="{$key}" {in name="key" value=""}selected{/in}>{$vo.name}</option>
                {/foreach}
            </select>
        </div>
    </div>

(3、页面修改完成后、对控制器进行修改,从html代码中可以看到分类的数据是的名称是parentList

{foreach name="parentList" item="vo"}

在category(类型表)控制其中可以看到对数据的应用是使用了

 $this->model = model('app\common\model\Category');
 $tree = Tree::instance();
 $tree->init(collection($this->model->order('weigh desc,id desc')->select())->toArray(), 'pid');
 $this->categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name');
 $categorydata = [0 => ['type' => 'all', 'name' => __('None')]];
 foreach ($this->categorylist as $k => $v)
 {
    $categorydata[$v['id']] = $v;
 }
 $this->view->assign("parentList", $categorydata);

开始上面说了我是盗用用过来所有 要满足他自带的一些 数据才可以正常使用,对其修改后的代码
要给引入

use fastTree;

避免冲突

protected $model_cat = null;

然后_initialize(构造函数)代码后面在添加
我在语句添加了几个条件,个人可以按情况修改。

        $this->model_cat = model('app\common\model\Category');
        $tree = Tree::instance();
        $tree->init(collection($this->model_cat->order('weigh desc,id desc')->where(array("type"=>"nav","status"=>"normal"))->field(["id","name","type","flag","pid"])->select())->toArray(), 'pid');
        $this->categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name');
        $categorydata =[];
        foreach ($this->categorylist as $k => $v)
        {
            $categorydata[$v['id']] = $v;
        }
        $this->view->assign("parentList", $categorydata);
至于edit.html 主要多个参数 {in name="key" value="$row.category_id"}selected{/in}

就是添加于option 标签里面 用于修改的 默认 选择原来选择的数据

  <option value="{$key}" {in name="key" value="$row.category_id"}selected{/in}>{$vo.name}</option>

(4、最后保存运行就欧克啦!!!

4 条评论

发布
问题