Содержание
скрыть
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'];