添加文章子分类
路由已经添加了,在/routes/web.php文件中
$router->addRoute(['GET', 'POST'], '/category/addChild/{id:[1-9]+}', 'CategoryController@addChild'); // 添加文章子分类
因为这是新增分类,所以,/app/Models/Category模型中,直接复用add()方法就行了。但是,我们在视图中,要展示上级的分类名称,所以,我们要关联上级的信息,那么我们就要使用关联模型了。因为我们是从子级查询父级,那么子级只能属于父级,所以,使用belongsTo()方法。
public function parent()
{
return $this->belongsTo(Category::class,'parent_id','id');
}
然后Category控制器新增一个方法addChild()方法,
public function addChild(int $id, Request $request)
{
// 同时获取父级的信息
$category = Category::with('parent')->where('id', $id)->first();
// if(empty($category->id)){
// //跳转到错误页面
// }
// 判断不是不post方式提交数据
if ($request->post()) {
// 添加分类
Category::add($request->input());
return $this->response->responseJSON();
}
$data['category'] = $category;
return view('admin.category.addChildCategory', $data);
}
然后再/resources/views/admin/category/目录下新建一个视图addChildCategory.blade.php。HTML代码和添加分类基本一样
<!DOCTYPE html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>添加文章子分类</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
<link rel="stylesheet" href="/css/font.css">
<link rel="stylesheet" href="/css/xadmin.css">
<script type="text/javascript" src="/lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="/js/xadmin.js"></script>
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="layui-fluid" style="width: 50%">
<div class="layui-row">
<form class="layui-form">
<div class="layui-form-item">
<label for="name" class="layui-form-label">
上级分类名
</label>
<div class="layui-input-inline">
<input type="text" id="name" name="name" required="" lay-verify="required"
autocomplete="off" class="layui-input" value="{{ $category['name'] }}" disabled>
</div>
</div>
<div class="layui-form-item">
<label for="name" class="layui-form-label">
<span class="x-red">*</span>分类名称
</label>
<div class="layui-input-inline">
<input type="text" id="name" name="name" required="" lay-verify="required"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="dir_name" class="layui-form-label">
<span class="x-red">*</span>目录名称
</label>
<div class="layui-input-inline">
<input type="text" id="dir_name" name="dir_name" required="" lay-verify="required"
autocomplete="off" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
<label for="is_nav" class="layui-form-label">
类型
</label>
<div class="layui-input-inline">
<input type="radio" name="type" value="1" title="列表" checked>
<input type="radio" name="type" value="2" title="单页" >
</div>
</div>
<div class="layui-form-item">
<label for="pic" class="layui-form-label">
图片
</label>
<button type="button" class="layui-btn" id="L_pic" required="" lay-verify="logo" autocomplete="off">
<i class="layui-icon"></i>上传图片
</button>
<input type="hidden" id="i_pic" name="pic" value="">
<img id="pic" src="" style="margin-top: 20px; width: 300px; @if(empty($data['logo'])) display: none @endif">
</div>
<div class="layui-form-item">
<label for="is_nav" class="layui-form-label">
作为导航
</label>
<div class="layui-input-inline">
<input type="radio" name="is_nav" value="" title="是" checked>
<input type="radio" name="is_nav" value="女" title="否" >
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button class="layui-btn" lay-filter="add" lay-submit="">
增加
</button>
</div>
</form>
</div>
</div>
<script>layui.use(['form', 'layer', 'jquery', 'upload'],
function () {
$ = layui.jquery;
var form = layui.form,
layer = layui.layer;
//自定义验证规则
form.verify({
name: function (value) {
if (value.length < 1) {
return '分类名称至少1个字符';
}
},
dir_name: function (value) {
if (value.length < 1) {
return '目录名至少一个字符';
}
},
});
//监听提交
form.on('submit(add)',
function (data) {
console.log(data);
//发异步,把数据提交给php
$.post('/admin/category/add',data.field,function (data) {
console.log(data);
layer.alert(data.msg, {
icon: 6
},
function () {
//关闭当前frame
xadmin.close();
// 可以对父窗口进行刷新
xadmin.father_reload();
});
return false;
});
return false;
});
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#L_pic' //绑定元素
, url: '/admin/upload/' //上传接口
, done: function (res) {
//上传完毕回调
if (res.code === 200) {
$('#i_pic').val(res.data.file);
$('#pic').attr('src', res.data.file).show();
}
}
, error: function () {
//请求异常回调
}
});
});</script>
</body>
</html>
刷新页面,新增一条信息
完。