6. Управление категориями. Часть 1

Создадим контроллер категорий:

php artisan make:controller Admin/CategoryController -r

Флаг -r обозначает, что контролер ресурсный (будут объявлены методы: index, create, store, show, edit, update, destroy).

Удалим метод show из созданного контроллера app/Http/Controllers/Admin/CategoryController.php , так как он нам не нужен.

Чтобы посмотреть все маршруты выполним команду:

php artisan route:list

Создадим ресурсный контроллер в routes/web.php :

Route::resource('categories', 'CategoryController');

В app/Http/Controllers/Admin/CategoryController.php в методе index запишем:

public function index()
{
    $categories = Category::paginate(2);
    return view('admin.categories.index', compact('categories'));
}

И создадим вид для показа категорий resources/views/admin/categories/index.blade.php:

@extends('admin.layouts.layout');

@section('content')
    Категории
@endsection

Страница должна открываться по адресу http://laratest2.loc/admin/categories.

В нашу секцию можно заносить любые элементы из исходной темы AdminLTE 3 . Перейдем на страницу https://adminlte.io/themes/v3/index2.html и просто скопируем исходный код любого элемента.

Изменим файл resources/views/admin/categories/index.blade.php :

@extends('admin.layouts.layout');

@section('content')
    <!-- Content Header (Page header) -->
    <section class="content-header">
        <div class="container-fluid">
            <div class="row mb-2">
                <div class="col-sm-6">
                    <h1>Категории</h1>
                </div>
                <div class="col-sm-6">
                    <ol class="breadcrumb float-sm-right">
                        <li class="breadcrumb-item"><a href="#">Главная</a></li>
                    </ol>
                </div>
            </div>
        </div><!-- /.container-fluid -->
    </section>

    <!-- Main content -->
    <section class="content">
        <a href="{{ route('categories.create') }}">
            <button type="button" class="btn btn-primary">Добавить категорию</button>
        </a>
        @if (!empty($categories->count()))
            <div class="card-body">
                <table class="table table-bordered">
                    <thead>
                    <tr>
                        <th style="width: 10px">id</th>
                        <th>Title</th>
                        <th>Slug</th>
                        <th style="width: 50px">Actions</th>
                    </tr>
                    </thead>
                    <tbody>
                    @foreach ($categories as $category)
                        <tr>
                            <td>{{ $category->id }}.</td>
                            <td>{{ $category->title }}</td>
                            <td>{{ $category->slug }}</td>
                            <td style="display: flex;">
                                <a href="{{ route('categories.edit', ['category' => $category->id]) }}">
                                    <button type="submit" class="btn btn-success btn-sm mr-2"><i
                                                class="fas fa-edit"></i>
                                    </button>
                                </a>
                                <form method="post"
                                      action="{{ route('categories.destroy', ['category' => $category->id]) }}">
                                    @csrf
                                    @method('DELETE')
                                    <button type="submit" class="btn btn-danger btn-sm"
                                            onclick="return confirm('Подтвердите удаление!')"><i
                                                class="fas fa-trash-alt"></i></button>
                                </form>
                            </td>
                        </tr>
                    @endforeach
                    </tbody>
                </table>
                {{ $categories->links() }}
            </div>
        @else
            <div>Категорий пока нет!</div>
        @endif
    </section>
    <!-- /.content -->
@endsection

Так же вниз файла resources/views/admin/layouts/layout.blade.php добавим скрипт, для того, чтобы список категорий не схлопывался:

    $('.nav-sidebar a').each(function() {
        let location = window.location.protocol + '//' + window.location.host + window.location.pathname;
        let link = this.href;
        if (link === location) {
            $(this).addClass('active');
            $(this).closest('.has-treeview').addClass('menu-open');
        }
    })
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

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