字典表添加的结构如下
image.png
展示产品服务字典表,可以发现表名不对
image.png
解决办法:改成这样就正确了,所以对应的后台的表名为cmf_portal_service
,除非表名改了,否则后台访问表的时候必须是这种格式。
image.png
image.png
可以看到如果parent_id的值等于id的值,那么该parent_id对应的内容就从属于该id,下图中的A从属于B,即:债券融资服务从属于科技金融服务
image.png
相关文件
BankMangerController.php文件
<?php
use app\hatching\model\PortalServiceModel;
class BankMangerController extends AdminBaseController
{
/**
* 让该控制器与serviceproductadd.html关联
*/
public function serviceproductadd()
{
$parentId = $this->request->param('parent', 0, 'intval');
$PortalServiceModel = new PortalServiceModel();
$categoriesTree = $PortalServiceModel->adminCategoryTree($parentId);
//print_r($categoriesTree);
$this->assign('categories_tree', $categoriesTree);
return $this->fetch();
}
}
PortalServiceModel.php文件
<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2018 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Powerless < wzxaini9@gmail.com>
// +----------------------------------------------------------------------
namespace app\hatching\model;
use think\Db;
use think\Model;
class PortalServiceModel extends Model
{
// $selectId为传递过来的id,仅用于默认选择树形结构中的某个分支
public function adminCategoryTree($selectId)
{
// 从$this指向的表中取数据存储到$中。
$categories = $this->order("id ASC")->where('parent_id',0)->select()->toArray();
$str="";
// 外层foreach执行一次,内容foreach执行一个循环。
foreach ($categories as $item) {
// 遍历所有的大类,即遍历categories中的内容,遍历出来的每个item都是大类。如果树形中的某个id等于传过来的id,就把selected赋值给左边的变量$selected存储起来,否则$selected为空
$selected = $selectId == $item['id'] ? "selected" : "";
$str .= "<option value=".$item['id']." ". $selected. ">".$item['name']."</option>";
// "<option value=93>金融服务</option>"
// 拿到$categories中遍历出来的某个大类(某个item)存储到categories_er中,然后利用foreach取出某个大类下的所有小类
$categories_er=$this->where('parent_id',$item['id'])->select()->toArray();
foreach ($categories_er as $key) {
// 遍历某个大类下,即遍历categories_er中的内容,,遍历出来的每个key都是某个大类下对应的小类。如果树形中的某个id等于传递过来的id,就把selected赋值给左边的变量$selected存储起来,否则$selected为空
$selected = $selectId == $key['id'] ? "selected" : "";
// 小类前边显示└─,包在<option></option>里面返回给调用者,调用者然后将内容显示到html中
$str .= "<option value=".$key['id']." ". $selected. "> └─".$key['name']."</option>";
}
}
return $str;
}
}
网友评论