新建一个Base模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use phpDocumentor\Reflection\Types\String_;
class Base extends Model
{
use HasFactory;
//软删除
use SoftDeletes;
protected $dates=['deleted_at'];
//设置添加时的黑名单
protected $guarded=[];
public function setRouteNameAttribute($value){
$this->attributes['route_name']=empty($value)?'':$value;
}
public function treeLevel(array $data, $pid = 0,$html='--', $level=0){
static $arr=[];
foreach ($data as $val){
if($pid == $val['pid']){
//重复一个字符多少次
$val['html']=str_repeat($html,$level *2);
$val['level']=$level+1;
$arr[]=$val;
$this->treeLevel($data,$val['id'],$html,$val['level']);
}
}
return $arr;
}
}
Model模型继承Base
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Fangattr extends Base
{
use HasFactory;
//获取数据
public function getList(){
//获取全部的数据
$data=self::get()->toArray();
//调用父类中的递归层级函数
return $this->treeLevel($data);
}
// 获取器
public function getIconAttribute(){
return config('url.domain').$this->attributes['icon'];
}
}
控制器实例化模型
public function index()
{
//实例化
$model=new Fangattr();
//取数据
$data=$model->getList();
//指定视图并赋值
return view('admin.fangattr.index',compact('data'));
}
view视图 index
@extends('admin.common.main')
@section('cnt')
<nav class="breadcrumb">
<i class="Hui-iconfont"></i> 首页
<span class="c-gray en">></span> 房源属性管理
<span class="c-gray en">></span> 房源属性列表
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont"></i></a>
</nav>
{{-- 消息提示 --}}
@include('admin.common.msg')
<div class="page-container">
<form method="get" class="text-c"> 输入想要搜索的权限名称:
<input type="text" class="input-text" style="width:250px" placeholder="节点" value="{{ request()->get('name') }}" name="name" autocomplete="off">
<button type="submit" class="btn btn-success radius"><i class="Hui-iconfont"></i> 搜节点</button>
</form>
<div class="cl pd-5 bg-1 bk-gray mt-20">
<span class="l">
<a onclick="layer_show('添加房源属性','{{route('Fangattr.create')}}')" class="btn btn-primary radius">
<i class="Hui-iconfont" ></i> 添加房源属性
</a>
</span>
</div>
<div class="mt-20">
<table class="table table-border table-bordered table-hover table-bg table-sort">
<thead>
<tr class="text-c">
<th width="80">ID</th>
<th width="100">房源属性名称</th>
<th width="100">图标</th>
<th width="100">字段名称</th>
<th width="130">加入时间</th>
<th width="100">操作</th>
</tr>
</thead>
<tbody>
@foreach($data as $item)
<tr class="text-c">
<td>{{ $item['id'] }}</td>
<td class="text-l">
{{ $item['html'] }}
{{ $item['name'] }}
</td>
<td><img src="{{ $item['icon'] }}" style="width: 50px;"/></td>
<td>{{ $item['field_name'] }}</td>
<td>{{ $item['created_at'] }}</td>
<td class="td-manage">
{{-- <a href="{{ route('admin.fangattr.edit',['id'=>$item['id']]) }}" class="label label-secondary radius">修改</a>--}}
{{-- <a data-href="{{ route('admin.fangattr.destroy',['id'=>$item['id']]) }}" class="delbtn label label-warning radius">删除</a>--}}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection
@section('js')
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="/admin/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="/admin/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="/admin/lib/laypage/1.2/laypage.js"></script>
</script>
@endsection
view添加视图 create
@extends('admin.common.main')
@section('cnt')
<nav class="breadcrumb">
<i class="Hui-iconfont"></i> 首页
<span class="c-gray en">></span> 房源属性管理
<span class="c-gray en">></span> 房源属性列表
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont"></i></a>
</nav>
{{-- 消息提示 --}}
@include('admin.common.msg')
<div class="page-container">
<form method="get" class="text-c"> 输入想要搜索的权限名称:
<input type="text" class="input-text" style="width:250px" placeholder="节点" value="{{ request()->get('name') }}" name="name" autocomplete="off">
<button type="submit" class="btn btn-success radius"><i class="Hui-iconfont"></i> 搜节点</button>
</form>
<div class="cl pd-5 bg-1 bk-gray mt-20">
<span class="l">
<a onclick="layer_show('添加房源属性','{{route('Fangattr.create')}}')" class="btn btn-primary radius">
<i class="Hui-iconfont" ></i> 添加房源属性
</a>
</span>
</div>
<div class="mt-20">
<table class="table table-border table-bordered table-hover table-bg table-sort">
<thead>
<tr class="text-c">
<th width="80">ID</th>
<th width="100">房源属性名称</th>
<th width="100">图标</th>
<th width="100">字段名称</th>
<th width="130">加入时间</th>
<th width="100">操作</th>
</tr>
</thead>
<tbody>
@foreach($data as $item)
<tr class="text-c">
<td>{{ $item['id'] }}</td>
<td class="text-l">
{{ $item['html'] }}
{{ $item['name'] }}
</td>
<td><img src="{{ $item['icon'] }}" style="width: 50px;"/></td>
<td>{{ $item['field_name'] }}</td>
<td>{{ $item['created_at'] }}</td>
<td class="td-manage">
{{-- <a href="{{ route('admin.fangattr.edit',['id'=>$item['id']]) }}" class="label label-secondary radius">修改</a>--}}
{{-- <a data-href="{{ route('admin.fangattr.destroy',['id'=>$item['id']]) }}" class="delbtn label label-warning radius">删除</a>--}}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection
@section('js')
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="/admin/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="/admin/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="/admin/lib/laypage/1.2/laypage.js"></script>
</script>
@endsection
数据表参考 房源表
CREATE TABLE `fangattrs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`pid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '上级ID',
`field_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '字段名',
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '图标',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
`icon` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
//以上页面样式请自行书写,该页面采用H-ui.admin模版