路由
//列表展示
Route::get('/fangattr/index','User\FangAttrController@index')->name('user.fangattr.index');
// 文件上传
Route::post('fangattr/upfile','User\FangAttrController@upfile')->name('user.fangattr.upfile');
//文章添加页面
Route::get('/fangattr/create','User\FangAttrController@create')->name('user.fangattr.create');
Route::post('/fangattr/store','User\FangAttrController@store')->name('user.fangattr.store');//修改
Route::get('/fangattr/{id}/edit','User\FangAttrController@edit')->name('user.fangattr.edit');
Route::put('/fangattr/{id}','User\FangAttrController@update')->name('user.fangattr.update');
//删除
Route::delete('/fangattr/delete/{id}','User\FangAttrController@delete')->name('user.fangattr.delete');
控制器
// App\Http\Controllers\User\FangAttrController.php
<?php
namespace App\Http\Controllers\User;// 导入房源模型
use App\Models\Fangattr;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;class FangAttrController extends Controller {/*** 列表*/public function index() {// 实例化$model = new Fangattr();// 取数据$data = $model->getList();// 指定视图并赋值return view('user.fangattr.index', compact('data'));}/*** 添加界面显示*/public function create() {// 获取顶部属性$data = Fangattr::where('pid', 0)->get();// 指定视图并赋值return view('user.fangattr.create', compact('data'));}// 文件上传public function upfile(Request $request) {// 默认图标$pic = config('up.pic');if ($request->hasFile('file')) {// 上传// 参数2 配置的节点名称$ret = $request->file('file')->store('', 'fangattr');$pic = '/uploads/fangattr/' . $ret;}return ['status' => 0, 'url' => $pic];}// 添加处理public function store(Request $request) {// 表单验证$this->validate($request, ['name' => 'required',//'field_name' => 'required']);// 验证通过后,入库并跳转到列表页面// 获取数据$postData = $request->except(['_token', 'file']);// 因为字段不能为null,而我们没有传数据,所以一定解决手段$postData['field_name'] = !empty($postData['field_name']) ? $postData['field_name'] : '';// 入库Fangattr::create($postData);// 跳转return redirect(route('user.fangattr.index'));}// 修改界面public function edit(Fangattr $fangattr ,$id) {// 获取顶部属性$fangattr=Fangattr::where('id',$id)->first();$data = Fangattr::where('pid', 0)->get();return view('user.fangattr.edit', compact('data', 'fangattr','id'));}// 修改处理public function update(Request $request, Fangattr $fangattr,$id) {// 表单验证$this->validate($request, ['name' => 'required',]);// 验证通过后,入库并跳转到列表页面// 获取数据$postData = $request->except(['_token', 'file', '_method']);// 因为字段不能为null,而我们没有传数据,所以一定解决手段$postData['field_name'] = !empty($postData['field_name']) ? $postData['field_name'] : '';// 修改入库Fangattr::where('id',$id)->update($postData);// 跳转return redirect(route('user.fangattr.index'));}// 删除操作public function delete(Fangattr $fangattr,$id) {Fangattr::find($id)->delete();return ['status' => 0, 'msg' => '删除成功'];}
}
模型
// App\Models\Fangattr.php
<?phpnamespace App\Models;class Fangattr extends Base
{// 获取数据public function getList() {// 获取全部的数据$data = self::get()->toArray();// 调用父类中的递归层级函数return $this->treeLevel($data);}// 获取器public function getIconAttribute() {return config('url.domain').$this->attributes['icon'];}
}
配置上传文件的配置节点
// App\config\filesystems.php// 房源属性'fangattr' => ['driver' => 'local',// 上传图片的路径'root' => public_path('uploads/fangattr'),],'public' => ['driver' => 'local','root' => storage_path('app/public'),'url' => env('APP_URL').'/storage','visibility' => 'public',],
列表模板
@extends('user.common.main')@section('cnt')<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页<span class="c-gray en">&gt;</span> 房源属性管理<span class="c-gray en">&gt;</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">&#xe68f;</i></a></nav>{{-- 消息提示 --}}@include('user.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">&#xe665;</i> 搜节点</button></form><div class="cl pd-5 bg-1 bk-gray mt-20"><span class="l"><a href="/fangattr/create" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe600;</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="80">字段名</th><th width="80">上级ID</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>{{$item['pid']}}</td><td>{{$item['field_name']}}</td><td><img src="{{ $item['icon'] }}" style="width: 50px;"/></td><td>{{ $item['created_at'] }}</td><td class="td-manage"><a href="{{ route('user.fangattr.edit',['id'=>$item['id']]) }}" class="label label-secondary radius">修改</a><a data-href="{{ route('user.fangattr.delete',['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>// 删除事件绑定$('.delbtn').click(function (evt) {// 在html中以data-开头的属性,都在evt对象中有传递过来//console.log(evt.target.dataset);let _this = $(this);// 请求的url地址let url = _this.attr('data-href');// 确认弹框layer.confirm('您真的要删除此条记录信息吗?', {btn: ['确认删除', '考虑一下']}, () => { // 真的选择了删除// 发起ajax$.ajax({url,type: 'delete',data: {_token: "{{csrf_token()}}"}}).then(ret => {layer.msg(ret.msg, {icon: 1, time: 2000}, () => {_this.parents('tr').remove();});});});});</script>
@endsection
添加模板
@extends('user.common.main')@section('css'){{-- webuploader上传样式 --}}<link rel="stylesheet" type="text/css" href="/webuploader/webuploader.css"/>
@endsection@section('cnt')<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页<span class="c-gray en">&gt;</span> 房源属性管理<span class="c-gray en">&gt;</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">&#xe68f;</i></a></nav><article class="page-container">{{-- 表单验证提示 --}}@include('user.common.validate')<form action="{{ route('user.fangattr.store') }}" id="form-member-add" method="post" class="form form-horizontal">@csrf<div class="row cl"><label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>是否顶级:</label><div class="formControls col-xs-8 col-sm-9"><span class="select-box"><select class="select" name="pid"><option value="0">==顶级==</option>@foreach($data as $item)<option value="{{ $item->id }}">{{ $item->name }}</option>@endforeach</select></span></div></div><div class="row cl"><label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>属性名称:</label><div class="formControls col-xs-8 col-sm-9"><input type="text" class="input-text" name="name"/></div></div><div class="row cl"><label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>属性图标:</label><div class="formControls col-xs-4 col-sm-5"><!-- 图片上传 --><div id="picker">选择图标</div></div><div class="formControls col-xs-4 col-sm-4"><input type="hidden" value="{{ config('up.pic') }}" name="icon" id="icon"/><img src="{{ config('up.pic') }}" id="pic" style="width: 50px;"></div></div><div class="row cl"><label class="form-label col-xs-4 col-sm-3">字段名称:</label><div class="formControls col-xs-8 col-sm-9"><input type="text" class="input-text" name="field_name"/></div></div><div class="row cl"><div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3"><input class="btn btn-primary radius" type="submit" value="添加属性"></div></div></form></article>
@endsection@section('js')<!-- webuploader上传js --><script type="text/javascript" src="/webuploader/webuploader.js"></script><!-- 前端验证 ---><script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/jquery.validate.js"></script><script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/validate-methods.js"></script><script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/messages_zh.js"></script><script>// 前端表单验证$("#form-member-add").validate({// 规则rules: {// 表单元素名称name: {// 验证规则required: true}},// 取消键盘事件onkeyup: false,// 验证成功后的样式success: "valid",// 验证通过后,处理的方法 form dom对象submitHandler: function (form) {// 表单提交form.submit();}});// 初始化Web Uploadervar uploader = WebUploader.create({// 选完文件后,是否自动上传auto: true,// swf文件路径swf: '/webuploader/Uploader.swf',// 文件接收服务端 上传PHP的代码server: '{{ route('user.fangattr.upfile') }}',// 文件上传是携带参数formData: {_token: '{{csrf_token()}}'},// 文件上传是的表单名称fileVal: 'file',// 选择文件的按钮pick: {id: '#picker',// 是否开启选择多个文件的能力multiple: false},// 压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!resize: true});// 上传成功时的回调方法uploader.on('uploadSuccess', function (file, ret) {// 图片路径let src = ret.url;// 给表单添加value值$('#icon').val(src);// 给图片添加src$('#pic').attr('src', src);});</script>
@endsection
修改模板
@extends('user.common.main')@section('css'){{-- webuploader上传样式 --}}<link rel="stylesheet" type="text/css" href="/webuploader/webuploader.css"/>
@endsection@section('cnt')<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页<span class="c-gray en">&gt;</span> 房源属性管理<span class="c-gray en">&gt;</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">&#xe68f;</i></a></nav><article class="page-container">{{-- 表单验证提示 --}}@include('user.common.validate')<form action="{{ route('user.fangattr.update',$id) }}" id="form-member-add" method="post" class="form form-horizontal">@method('PUT')@csrf<div class="row cl"><label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>是否顶级:</label><div class="formControls col-xs-8 col-sm-9"><span class="select-box"><select class="select" name="pid"><option value="0" @if($fangattr->pid==0) selected @endif>==顶级==</option>@foreach($data as $item)<option value="{{ $item->id }}" @if($fangattr->pid==$item->id) selected @endif>{{ $item->name }}</option>@endforeach</select></span></div></div><div class="row cl"><label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>属性名称:</label><div class="formControls col-xs-8 col-sm-9"><input type="text" class="input-text" name="name" value="{{ $fangattr->name }}"/></div></div><div class="row cl"><label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>属性图标:</label><div class="formControls col-xs-4 col-sm-5"><!-- 图片上传 --><div id="picker">选择图标</div></div><div class="formControls col-xs-4 col-sm-4"><input type="hidden" value="{{ $fangattr->icon }}" name="icon" id="icon"/><img src="{{ $fangattr->icon }}" id="pic" style="width: 50px;"></div></div><div class="row cl"><label class="form-label col-xs-4 col-sm-3">字段名称:</label><div class="formControls col-xs-8 col-sm-9"><input type="text" class="input-text" name="field_name" value="{{ $fangattr->field_name }}"/></div></div><div class="row cl"><div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3"><input class="btn btn-primary radius" type="submit" value="修改属性"></div></div></form></article>
@endsection@section('js')<!-- webuploader上传js --><script type="text/javascript" src="/webuploader/webuploader.js"></script><!-- 前端验证 ---><script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/jquery.validate.js"></script><script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/validate-methods.js"></script><script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/messages_zh.js"></script><script>// 前端表单验证$("#form-member-add").validate({// 规则rules: {// 表单元素名称name: {// 验证规则required: true}},// 取消键盘事件onkeyup: false,// 验证成功后的样式success: "valid",// 验证通过后,处理的方法 form dom对象submitHandler: function (form) {// 表单提交form.submit();}});// 初始化Web Uploadervar uploader = WebUploader.create({// 选完文件后,是否自动上传auto: true,// swf文件路径swf: '/webuploader/Uploader.swf',// 文件接收服务端 上传PHP的代码server: '{{ route('user.fangattr.upfile') }}',// 文件上传是携带参数formData: {_token: '{{csrf_token()}}'},// 文件上传是的表单名称fileVal: 'file',// 选择文件的按钮pick: {id: '#picker',// 是否开启选择多个文件的能力multiple: false},// 压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!resize: true});// 上传成功时的回调方法uploader.on('uploadSuccess', function (file, ret) {// 图片路径let src = ret.url;// 给表单添加value值$('#icon').val(src);// 给图片添加src$('#pic').attr('src', src);});</script>
@endsection

laraverl框架房源管理相关推荐

  1. Spring框架-事务管理注意事项

    转载自 Spring框架-事务管理注意事项 常见事务问题 事务不起作用 可能是配置不起效,如扫描问题 事务自动提交了(批量操作中) 可能是在没事务的情况下,利用了数据库的隐式提交 事务配置说明 通常情 ...

  2. 房源租赁签约管理系统、租房系统、退租、续租、换租、转租、房源管理、招租系统、租期账单、合同管理、营销推广、租客系统、业主系统、web原型、业务流程 、门禁系统、Axure原型、rp源文件

    房源租赁签约管理系统.租房系统.退租.续租.换租.转租.房源管理.招租系统.租期账单.合同管理.营销推广.租客系统.门禁系统.业主系统.web原型.业务流程 .Axure原型.rp源文件 Axure原 ...

  3. Bean对象为什么要交给Spring框架来管理?

    Bean对象为什么要交给Spring框架来管理? Spring框架是一个资源管理整合框架,可以将自己写的对象或者是第三方提供的对象(连接池等)整合到一起. 我们在使用Spring的bean对象时,会遇 ...

  4. Java分布式二手房项目尚好房第四课 二手房和房源管理

    尚好房:二手房管理 一.功能介绍 1.数据字典 2.小区管理 3.房源管理 二.数据字典 1.搭建service-house模块 搭建方式与service-acl一致,这里可直接复制service-a ...

  5. 雄顺房源管理器 绿色

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  6. 学习MVC之租房网站(七)-房源管理和配图上传

    在上一篇<学习MVC之租房网站(六)-用户登录和权限控制>完成了后台用户登录和权限控制功能的开发,接下来要完成的是房源的管理,用户在后台新增.编辑房源信息,供前台用户操作. 一 房源管理 ...

  7. 基于SSM+JSP实现的民宿预订网站(用户管理、房源管理、注册登录、民宿预定、订单管理、订单删除等)

    博客目录 基于SSM+JSP实现的民宿预订网站 实现功能截图 系统功能 使用技术 完整源码 基于SSM+JSP实现的民宿预订网站 本系统是SSM的民宿管理系统,可以实现用户管理.房源管理.用户注册登录 ...

  8. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookee ...

  9. 分布式服务框架 Zookeeper — 管理分布式环境中的数据

    FROM: http://www.superwu.cn/2014/11/26/1461 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Z ...

最新文章

  1. 中双目运算符_C++日志(四十)教你如何以非成员函数的形式重载运算符
  2. 数据结构 - 把二元查找树转变成排序的双向链表(C++)
  3. 【Kaggle-MNIST之路】CNN再添加一个层卷积(八)
  4. N个数依次入栈,出栈顺序有多少种?
  5. npm install Saving to file: /root/.jenkins/workspace/ems-web/node_modules/chromedriver/2
  6. 蓝桥杯 2018年蓝桥杯C语言大学C组 C/C++
  7. html5初探ppt,HTML5---HTML5初探151019讲义.ppt
  8. iOS底层探索之dyld(上):动态链接器流程分析
  9. 同事乱用 Redis 卡爆,我真是醉了
  10. mysql和php长度的漏洞_mysql和php字符长度判断
  11. 网络工程师_记录的一些真题_2017上半年上午
  12. macpro下docker安装目录_macos – 在mac os下的Docker deamon配置路径
  13. Unity实现将图片上传到服务器功能
  14. 爬虫与反爬虫,永恒的道高一尺魔高一丈
  15. java动效_前端实现炫酷动效_Lottie-前端实现AE动效
  16. android 7.1内存泄漏,android - Android 7.1和7本机崩溃:libc.so tgkill + 12 - 堆栈内存溢出...
  17. audioread-支持多种解码 (GStreamer + Core Audio + MAD + FFmpeg) 的python音频解码库
  18. Python进度条库tqdm详解
  19. win10系统下安装打印机驱动
  20. 雨晨QQ2012 (4924)绿色版|qq三显IP显隐身VIP完美自选版

热门文章

  1. FusionCharts(Falsh图表)免费版下载和使用
  2. 有源医疗器械常见技术问题及解答汇总
  3. 微服务-熔断器Hystrix
  4. Unity模糊远处物体,近处清晰,景深效果
  5. BottomNavigationView+Navigation 添加底部导航菜单切换时的fragment过渡动画animation
  6. python和nltk自然语言处理 pdf_NLTK基础教程:用NLTK和Python库构建机器学习应用 完整版pdf...
  7. leetcode【每日一题】514. 自由之路 Java【待完成
  8. WebSocket——SpringBoot+Vue3+TS+SockJS+STOMP简单连接使用
  9. DOS命令操作大全和计算机运行命令(初次写请多多关照)
  10. Eclipse Helios(3.6.2)下载地址