Содержание
скрыть
Route
В routes/web.php в группу admin добавим:
Route::resource('tags', 'TagController');
Controller
Создадим файл app/Http/Controllers/Admin/TagController.php . В него скопируем все из app/Http/Controllers/Admin/CategoryController.php. И заменим слова Category, categories, Категории на соответсвующие слова тэг. Получится файл app/Http/Controllers/Admin/TagController.php :
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Tag; use Illuminate\Http\Request; use Illuminate\Http\Response; class TagController extends Controller { /** * Display a listing of the resource. * * @return Response */ public function index() { $tags = Tag::paginate(20); return view('admin.tags.index', compact('tags')); } /** * Show the form for creating a new resource. * * @return Response */ public function create() { return view('admin.tags.create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return Response */ public function store(Request $request) { $request->validate([ 'title' => 'required', ]); Tag::create($request->all()); // $request->session()->flash('success', 'Тэг добавлена!'); // flash message return redirect()->route('tags.index')->with('success', 'Тэг добавлен!'); // similarly flash message } /** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { $tag = Tag::find($id); return view('admin.tags.edit', compact('tag')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return Response */ public function update(Request $request, $id) { $request->validate([ 'title' => 'required', ]); $tag = Tag::find($id); //$tag->slug = null; // чтобы изменялся слаг при редактировании $tag->update($request->all()); return redirect()->route('tags.index')->with('success', 'Тэг изменена!'); } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { //$tag = Tag::find($id); //$tag->delete(); Tag::destroy($id); return redirect()->route('tags.index')->with('success', 'Тэг удалена!'); } }
View
Создадим папку с файлами resources/views/admin/tags/ скопируем в нее все из папки resources/views/admin/categories/ и заменим также все появления слов category на tag и их вариации.
В resources/views/admin/layouts/layout.blade.php добавим (скопируем у категорий):
<li class="nav-item has-treeview"> <a href="#" class="nav-link"> <i class="nav-icon fas fa-tags"></i> <p> Тэги <i class="right fas fa-angle-left"></i> </p> </a> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="{{ route('tags.index') }}" class="nav-link"> <i class="far fa-circle nav-icon"></i> <p>Тэги</p> </a> </li> <li class="nav-item"> <a href="{{ route('tags.create') }}" class="nav-link"> <i class="far fa-circle nav-icon"></i> <p>Новый тэг</p> </a> </li> </ul> </li>
Model
В модели app/Models/Tag.php добавим:
protected $fillable = ['title'];