104 lines
3.2 KiB
PHP
104 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Models\Category;
|
|
use Illuminate\Http\Request;
|
|
use Validator;
|
|
|
|
class CategoryController extends Controller
|
|
{
|
|
|
|
public function index(Request $request)
|
|
{
|
|
$title = $request->title;
|
|
$parent_id = $request->get('parent_id', 0) ?: 0;
|
|
$orderField = $request->orderField;
|
|
$orderDirection = $request->orderDirection;
|
|
$numPerPage = $request->numPerPage ?: 30;
|
|
|
|
$categories = Category::where('parent_id', $parent_id)
|
|
->when($title, function ($query) use ($title) {
|
|
$query->where('title', 'like', "%{$title}%");
|
|
})
|
|
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
|
$query->orderBy($orderField, $orderDirection);
|
|
})->paginate($numPerPage);
|
|
|
|
$categoryTree = Category::with(['children'])->where('parent_id', 0)->orderBy('sort', 'asc')->get();
|
|
|
|
return view('Admin::categories.index', compact('categoryTree', 'categories'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$topCates = Category::treeShow();
|
|
return view('Admin::categories.create', compact('topCates'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'title' => 'required|max:16',
|
|
'sort' => 'required|integer',
|
|
], [
|
|
'title.required' => '分类名称必须填写',
|
|
'title.max' => '分类名称长度应在:max以内',
|
|
'sort.required' => '分类排序必须填写',
|
|
'sort.integer' => '分类排序只能是数字',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return $this->error($validator->errors()->first());
|
|
}
|
|
|
|
if (Category::create($request->all())) {
|
|
return $this->success('新增分类成功', 'close');
|
|
} else {
|
|
return $this->error();
|
|
}
|
|
}
|
|
|
|
public function edit(Category $category)
|
|
{
|
|
$topCates = Category::treeShow($category->id);
|
|
return view('Admin::categories.edit', compact('topCates', 'category'));
|
|
}
|
|
|
|
public function update(Request $request, Category $category)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'title' => 'required|max:16',
|
|
'sort' => 'required|integer',
|
|
], [
|
|
'title.required' => '分类名称必须填写',
|
|
'title.max' => '分类名称长度应在:max以内',
|
|
'sort.required' => '分类排序必须填写',
|
|
'sort.integer' => '分类排序只能是数字',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return $this->error($validator->errors()->first());
|
|
}
|
|
|
|
if ($category->update($request->all())) {
|
|
return $this->success('编辑分类成功', 'close');
|
|
} else {
|
|
return $this->error();
|
|
}
|
|
}
|
|
|
|
public function destroy(Category $category)
|
|
{
|
|
$exclude_ids = [1, 2];
|
|
if (in_array($category->id, $exclude_ids)) {
|
|
return $this->error('此分类不能删除');
|
|
}
|
|
if ($category->delete()) {
|
|
return $this->success();
|
|
} else {
|
|
return $this->error();
|
|
}
|
|
}
|
|
}
|