Главная Новости

Часть 5 - Простая система редактирования в Laravel - Структура проекта

Опубликовано: 03.08.2023

Часть 5 - Простая система редактирования в Laravel - Структура проекта

На последнем уроке, Завершение калькулятора в Laravel,которая в основном была посвящена основам и объяснению необходимых принципов, мы выполнили очень простое приложение. Однако сегодня мы начнем новый проект с обещанной простой системой редактирования. Кому-то этот проект может быть интереснее, потому что мы попробуем поработать с другими компонентами, которые нам предлагает Laravel. Одним из таких компонентов является, например, Красноречивый, который предоставляет ORM для работы с базой данных. Однако на сегодняшнем уроке мы рассмотрим структуру проекта, в том числе и потому, что на этот раз нам нужно настроить проект.

Структура проекта Laravel

В реальных коммерческих проектах очень много классов и файлов, и мы точно не смогли бы сделать это, просто разделив структуру проекта на контроллеры, модели и представления. Наличие десятков файлов в одной папке, мягко говоря, сбивает с толку. Код будет плохо управляться, и вы дойдете до того, что будете писать одни и те же методы снова и снова вместо параметризации существующего, потому что вы даже не будете знать, что в проекте уже есть подобный. И это начало конца. Как выйти из него?

Мы разделим классы налогические группыи вас точно не удивит, что мы будем использовать для этой цели пространства имен. Это именно тот инструмент, который предназначен для решения проблемы с большим количеством классов. Однако Laravel — это не просто MVC-фреймворк. Он содержит большое количество компонентов, с которыми мы можем работать, поэтому нам не хватит даже простого разделения на несколько компонентов.

Laravel дает нам свободу выбора макета нашего проекта. Мы не создаем никаких модулей и проект не делится на «пакеты». Основным критерием деления классов и других файлов является ихзадача.Так что каждая часть логики приложения имеет свой главный компонент, к которому она относится, и только впоследствии от нас зависит, будет ли создаем в этих компонентах подпапки для отдельных частей приложения (например, администрация статьи), или нет. В любом случае, создание вложенных папок определенно полезно для больших приложений (лучше ориентироваться в том, где что находится), и мы применяем это к нашему проекту.

Каркасная структура

Давайте теперь опишем базовую структуру фреймворка Laravel, которую мы также расширим в следующих уроках. В настоящее время структура каталогов нашего приложения выглядит так:

  • Программы/ - Содержит ядро ​​нашего приложения и включает в себя все различные компоненты от контроллеров до пользовательских событий. Консоль/ - Пользовательские консольные команды Laravel Artisan. Так же, как есть команда сделать:контроллер, который мы использовали на уроке Первые приложения в Laravel,мы можем создать свой собственный. Но об этом мы поговорим на следующих уроках.

    Исключения/ - Исключения

    http/ - Он содержит почти все о логике обработки запросов Контроллеры/ - Контроллеры

    ПО промежуточного слоя/ - Класс промежуточного программного обеспечения

    Провайдеры/ - Он содержит классы, которые заботятся, например, о регистрации собственных событий или настройке обработки запросов.

  • Консоль/ - Пользовательские консольные команды Laravel Artisan. Так же, как есть команда сделать:контроллер, который мы использовали на уроке Первые приложения в Laravel,мы можем создать свой собственный. Но об этом мы поговорим на следующих уроках.
  • Исключения/ - Исключения
  • http/ - Он содержит почти все о логике обработки запросов Контроллеры/ - Контроллеры

    ПО промежуточного слоя/ - Классы промежуточного программного обеспечения

  • Контроллеры/ - Контроллеры
  • ПО промежуточного слоя/ - Класс промежуточного программного обеспечения
  • Провайдеры/ - Он содержит классы, которые заботятся, например, о регистрации собственных событий или настройке обработки запросов.
  • бутстрап/ - Содержит загрузочный файл фреймворка, а также кеш сгенерированных маршрутов и пакетов. Мы даже не будем брать этот компонент во время нашего проекта
  • конфиг/ - Содержит конфигурацию проекта
  • база данных/ - Содержит миграции баз данных и классы для заполнения таблиц базы данных поддельными данными.
  • общественный/ - Корневой каталог всего веб-сайта (точка доступа, где все файлы доступны извне). Он также включает файл index.php, который обрабатывает все веб-запросы css/ - CSS-файлы

    js/ - файлы JavaScript

  • css/ - CSS-файлы
  • js/ - файлы JavaScript
  • Ресурсы/ - Содержит нескомпилированные исходные файлы для интерфейса приложения и переводов. js/ - Нескомпилированные файлы JavaScript

    язык/ - Содержит файлы с фразами и их переводами

    дерзкий / - Нескомпилированные файлы SCSS

    Просмотры/ - Взгляды

  • js/ - Нескомпилированные файлы JavaScript
  • язык/ - Содержит файлы с фразами и их переводами
  • дерзкий / - Нескомпилированные файлы SCSS
  • Просмотры/ - Взгляды
  • маршруты/ - Маршрутизация нашей сети, API, пользовательских команд Artisan и каналов для WebSocket
  • хранилище/ - Содержит сеансы пользовательских файлов, журналы, возможное хранилище для наших сгенерированных файлов и кеш сгенерированных представлений Blade и других файлов.
  • тесты/ - Автоматизированные тесты для проверки работоспособности частей приложения
  • продавец/ - Библиотеки, управляемые через Composer

Вам может быть интересно, где находится папка с моделями? В старых версиях для этого была специальная папка. модели/, но он был заброшен. Для разработчиков фреймворков я нахожу слово «модель» неоднозначным, поскольку для каждого оно может означать что-то свое. Поэтому, как уже было сказано, решать самому разработчику приложения, куда он будет сохранять модели. Однако в большинстве случаев используется только компонент Программы/.

Хотя поначалу может показаться, что структура фреймворка слишком сложная и разветвленная, не отчаивайтесь. Со временем мы научимся использовать многие из доступных компонентов и, таким образом, также станем более ориентированными в нашем проекте.

Создание нового проекта

Пришло время создать новый проект, с которым мы будем работать на следующих уроках. Базовую установку и запуск нового приложения Laravel мы уже показывали в уроке Установка Laravel и запуск проекта. Мы назовем наш проект как laravel-cms (LaravelCсодержаниеMуправлениеSYSTÉM).

Установка Node.js

В отличие от предыдущего проекта, мы планируем работать и с интерфейсными частями приложения. Поэтому нам нужно что-то, что позаботится о внешних библиотеках и скомпилирует создаваемые нами файлы, такие как CSS, JavaScript, SCSS и другие. По этой причине мы загрузим и установим его в соответствии с инструкциями. Node.js,чей установщик также включает в себя только что необходимый система пакетов NPM. Этот установщик можно загрузить с раздел загрузки.

Подробную установку Node.js можно найти в Курс Node.js.

После завершения установки просто запустите команду в корневой папке проекта установка нпм, который скачивает и подготавливает нам необходимые библиотеки в автоматически созданной папке node_modules/.

Пользовательский интерфейс Laravel

Как уже говорилось в уроке Первые приложения в Laravel,стиль и использование интерфейсных фреймворков были удалены из основы. Однако, поскольку в этом курсе мы хотим в первую очередь сосредоточиться на back-end части сайта и не хотим тратить время на ненужную стилизацию, мы будем использовать пакет Пользовательский интерфейс Laravel,куда эти дела были переданы.

В корневой папке проекта запускаем следующую команду:

композитор требовать laravel/пользовательский интерфейс --dev

Теперь мы можем использовать команду Artisan ой, где мы передаем тип интерфейсной платформы, которую хотим установить. Мы не будем использовать все, что нам предлагают (обойдемся без Vue и Реагировать ):

Начальная загрузка пользовательского интерфейса в php artisan

Вот как они установили себя для нас CSS-фреймворк Bootstrap а jQuery расширение JavaScript. Давайте поговорим о них сейчас.

Фронтенд-фреймворки

Начальная загрузка

Bootstrap — идеальное решение для проектов, которые в основном ориентированы на серверную часть, и его разработчикам не нужно беспокоиться о сложном дизайне. Однако вместо этого будут использоваться готовые стили, значки и виджеты, созданные и импортированные этим CSS-фреймворком.

Чтобы импортировать Bootstrap, мы можем заглянуть в файл SCSS. ресурсы/sass/app.scss, где мы используем пакет, управляемый через NPM:

// Bootstrap @import '~bootstrap/scss/bootstrap';

Затем Bootstrap вставляется в основной файл после компиляции, поэтому нам не нужно связывать его с внешним сервисом. Но мы покажем это позже в этой серии.

JQuery

Еще один добавленный интерфейсный фреймворк — jQuery. Он расширит JavaScript важными функциями и, таким образом, облегчит работу с HTML-документом.

Импорт jQuery и других пакетов, управляемых через NPM, происходит в файле JavaScript. ресурсы/js/boostrap.js через функцию Node.js требовать():

пытаться {  window.Popper = требуется( ). по умолчанию ; окно.$ = окно.jQuery = требуется( ); требовать( ); } ловить (д) {}

Импортированные библиотеки и фреймворки помещаются обратно в основной файл после компиляции. Однако, как мы можем видеть в разделе файла выше, это не единственный внешний пакет, который использует пользовательский интерфейс Laravel при использовании типа начальная загрузка определяет. Тем не менее, jQuery и Bootstrap являются основными интерфейсными фреймворками, с которыми мы будем работать, и о них стоит упомянуть.

Компиляция интерфейсных файлов

Полное объяснение и описание процесса компиляции будет рассмотрено на уроке Простая редакционная система в Laravel — Laravel Mix. Однако, поскольку без этого процесса у нас не было бы результирующих файлов CSS и JS с упомянутыми выше рабочими фреймворками, теперь мы должны использовать одну из доступных команд. Для простоты мы запускаем команду, рекомендованную пакетом пользовательского интерфейса Laravel:

нпм запустить разработчик

Настройка проекта

На следующих уроках мы будем работать с базой данных, поэтому стоит также посмотреть на конфигурацию нашего проекта. Мы неожиданно находим его в файле.env в корневой папке проекта. Переменные, определенные в этом файле, впоследствии используются файлами конфигурации в папке конфиг/ и мы также можем использовать эти переменные в нашем собственном коде.

В следующей части файла мы изменим указанные переменные на их собственные значения:

APP_NAME="Laravel CMS" APP_ENV=local APP_KEY=base64:2QMv19PNck4Yo4VFsiLXhznApNffWzBccxfsfUvbKOc= APP_DEBUG=true APP_URL=http://localhost:8000  LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST= 127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel cms DB_USERNAME=root DB_PASSWORD= пароль...

Как вы могли заметить, значения, состоящие из нескольких слов, необходимо заключать в кавычки. Мы используем это в имени нашего приложения, определяемого переменной ИМЯ ПРИЛОЖЕНИЯ. Ценить APP_KEY он уже сгенерирован при установке, нам не нужно его менять. Однако мы изменим значение переменной APP_URL на URL-адрес, ссылающийся на наш проект. Наконец, мы также отредактируем набор переменных, определяющих настройку соединения с базой данных, что пригодится для следующего урока.

Остальные переменные пока оставим как есть.

Если это в вашем.env значение переменной файла APP_KEY пусто, используйте команду Ключ ремесленника php: сгенерировать для генерации нового ключа.

Итак, теперь я предполагаю, что у нас все настроено. Но это конец этого урока. Мы хорошо подготовились к следующему уроку, Простая редакционная система в Laravel — Миграция,где нас ждет ORM над базой данных и работа с миграцией.