Как структурировать представления для макета администратора в лезвии laravel?

Цель состоит в том, чтобы создать область администратора в моем проекте laravel. У меня есть вопрос о том, как структурировать представления и контроллеры для создания макета администратора с использованием компонентов laravel.

Скажем, у меня есть один контроллер (app/Http/Controllers/CategoryController.php) на данный момент:

class CategoryController extends Controller
{
    public function index()
    {
        return view('category.index');
    }
}

Вид (resources/views/categories/index.blade.php):

<x-app-layout>
    Categories Index Page
</x-app-layout>

Базовый макет определен в resources/views/layouts/app.blade.php.

Функционал внутри CategoryController только для админов. Я хочу создать макет администратора, который наследует базовый макет. Просмотры категорий затем переходят в макет администратора. Макет администратора имеет боковую панель слева с навигацией. Навигация указывает на такие контроллеры, как CategoryController и UserController. Макет администратора будет отображать различные функции администратора.

Что я пробовал:

views/admin/admin.blade.php:

<x-app-layout>
    <h1>TEST</h1>
    {{$slot}}
</x-app-layout>

и views/admin/categories/index.blade.php:

<x-admin>
    Categories Index Page
</x-admin>

Ошибка:

Не удалось найти класс или представление для компонента [admin].

Любые идеи, что я делаю неправильно здесь? Как следует структурировать представления для такого варианта использования?

Должны ли это быть компоненты? Вы можете создать resources/views/layouts/admin.blade.php это @extends('layouts.app')

brombeer 14.12.2020 13:39

@brombeer нет, это не обязательно компоненты

DarkLeafyGreen 14.12.2020 13:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
2
2 917
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Создайте resources/views/layouts/admin.blade.php, который выглядит примерно так:

@extends('layouts.app')

@section('content')
  <div class = "navigation">
    ...YourNavbar...
  </div>
  <div class = "content">
    @yield('content')
  </div>
@overwrite

(Отредактируйте код внутри, чтобы он соответствовал тому, как вы хотите, чтобы ваша навигационная панель/контент выглядели)

Теперь ваш resources/views/categories/index.blade.php должен использовать @extends('layouts.admin') вместо @extends('layouts.app')

Обновлено: предполагается, что у вашего app.blade.php есть @yield('content') для отображения контента

Если кто-то ищет решение с использованием компонентов: laracasts.com/series/laravel-6-from-scratch/episodes/61.

DarkLeafyGreen 15.12.2020 10:40

Это не работает, потому что вам нужно создать файл компонента «AdminLayout.php» для макета администратора в: /app/View/Components, а затем использовать <x-admin-layout> в ваших файлах представлений.

Другие вопросы по теме