8. Управление тегами

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'];

 

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии