Как сделать пакет для laravel

Обновлено: 04.07.2024

В этой статье мы продолжим изучение функции управления пакетами в среде Laravel. В ходе статьи мы рассмотрим пример из реальной жизни, чтобы продемонстрировать цель статьи.

Управление пакетами в Laravel — это важная функция, которая позволяет объединить часть функциональности, чтобы ее можно было легко распространять. Более того, вы всегда можете опубликовать свой пакет в таких репозиториях, как Packagist и GitHub, которые позволят другим разработчикам воспользоваться вашим пакетом.

Чтобы продемонстрировать концепцию, мы создадим пример страницы в Laravel, которая загружает изображение в облако Amazon S3. Вместо того, чтобы идти с обычным потоком, мы разработаем его как пакет, который можно легко распространять и поддерживать.

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

Кроме того, вам необходимо иметь действительную учетную запись AWS и учетные данные для доступа к API Amazon, чтобы следовать примеру, приведенному в этой статье. Поэтому убедитесь, что вы установили это в первую очередь.

Имея все под рукой, мы готовы погрузиться в реальное развитие.

Настройка файлов пакета

Давайте быстро посмотрим на список файлов, которые мы реализуем на протяжении всего курса.

  • composer.json : нам нужно добавить отображение классов нашего пакета в существующий файл composer.json в корне пакета.
  • config/app.php : это существующий файл, который мы будем использовать для добавления записи нашего провайдера нестандартных услуг, чтобы мы могли загружать представления и маршруты, используя этот файл.
  • composer.json : это специфичный для пакета файл composer.json если вы хотите распространить пакет среди других.
  • packages/envato/aws/src/Providers/AwsServiceProvider.php : обычный файл поставщика услуг Laravel, который будет использоваться для загрузки других компонентов пакета.
  • packages/envato/aws/src/routes/web.php : загружает пользовательские маршруты нашего пакета.
  • packages/envato/aws/src/Controllers/AwsController.php : это файл контроллера, который обрабатывает логику приложения нашего пакета.
  • packages/envato/aws/src/views/upload.blade.php : Файл представления, который обрабатывает логику рендеринга.

Не волнуйтесь, если это пока не имеет особого смысла, так как мы обсудим все подробно, как только мы разберемся с этим.

Настройка предварительных условий

Как мы уже говорили ранее, в нашем пакете реализован вариант загрузки файлов в облако Amazon S3. В этом разделе мы рассмотрим предварительные условия, которые необходимо настроить для успешного запуска нашего пакета.

Как разработчик Laravel, вы должны быть знакомы с Flysystem, которая предоставляет хороший уровень абстракции для взаимодействия с файловой системой. Он предоставляет простые в использовании драйверы, так что вы можете легко взаимодействовать с ним независимо от типа файловой системы, с которой вы имеете дело — будь то локальная файловая система или облачная система AWS S3.

Чтобы включить поддержку облачной файловой системы Amazon S3 с Flysystem, вам необходимо установить соответствующий пакет компоновщика адаптера.

Для установки пакета flysystem-aws-s3-v3 выполните следующую команду composer из корня проекта.

После успешного выполнения этой команды теперь вы можете использовать Laravel Flysystem для взаимодействия с облачной файловой системой Amazon S3 так же, как вы использовали бы ее для локальной файловой системы.

В этом руководстве по Laravel для начинающих мы расскажем, как установить Laravel и создать своё первое приложение на нём. В этом руководстве мы простым языком объясним все необходимые понятия, чтобы вы могли легко изучить Laravel и лучше его понять.

Введение

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

Фреймворк Laravel предоставляет различные PHP-библиотеки и вспомогательные функции. Он обеспечивает общие функции и логику, чтобы упростить и ускорить разработку, а также помочь вам сосредоточиться на более важных вещах.

Чтобы вам было легче изучить Laravel, я написал это руководство специально для неопытной аудитории. Так вам будет проще следовать этому руководству и изучать Laravel.

Что вы должны знать перед использованием этого руководства по Laravel?

  • HTML/CSS (Естественно).
  • Понимание базового PHP.
  • Владение PHP на среднем уровне – это не обязательно, но если у вас есть время, изучите некоторые рядовые вещи: ООП в PHP, абстракцию и т. д.
  • Базовое понимание фреймворка MVC.
  • Усидчивость – несмотря на то, что изучать Laravel довольно легко, спустя какое-то время вам всё же придется испытать собственное терпение. По крайней мере, у меня были некоторые проблемы из-за того, что я знал PHP, но совсем не разбирался в фреймворках. Когда я изучал фреймворк или успешно завершал проекты, я всё равно путался с базовыми вещами, которые лежат в основе фреймворка MVC. Но я не сдавался.
  • Увлечение – да ладно вам, ведь веб-разработка – это весело! По крайней мере, когда используешь Laravel. Лучше всего получать наслаждение от своего познавательного путешествия.

Установка и настройка

Laravel предлагает различные способы установки на Windows или Mac. Лучший и самый простой способ установить Laravel – через Composer. Composer — это менеджер зависимостей для PHP, который вы можете установить на свой веб-сервер.

Требования для установки Laravel 8

Перед установкой Laravel на вашу локальную платформу (Localhost) вам необходимо установить следующие программы:

  • Веб-сервер – Apache или nginx
  • >= PHP 7.3
  • Некоторые расширения PHP, которые можно установить заранее:
  1. BCMath
  2. Ctype
  3. Fileinfo
  4. JSON
  5. Mbstring
  6. OpenSSL
  7. PDO
  8. Tokenizer
  9. XML
  • MySQL (или другие системы управления базой данных, вы даже можете использовать SQLite).
  • Composer
  • IDE (интегрированная среда разработки) будет очень полезна для разработки на Laravel. Я рекомендую VS Code или Atom. И то, и другое можно использовать совершенно бесплатно.

Пошаговая установка Laravel на локальном хосте:

Шаги для пользователей Mac:

  1. Убедитесь, что все компоненты установлены.
  2. Установите Composer, используя следующую команду (если у вас уже установлен и настроен Composer, пропускайте этот шаг).
  • Перейти в нужную папку;
  • Выполнить команду laravel new projectname.

Шаги для пользователей Windows:

В нашем примере выполняем:

Руководство по созданию простого CRUD-приложения для составления списка дел на Laravel

Лучший способ изучить программирование – практиковаться. Поэтому здесь мы будем изучать основы Laravel, разрабатывая простое веб-приложение, которое будет выполнять перечисленные ниже функции. В рамках этого руководства по Laravel:

  • Вы сможете зарегистрироваться и войти в веб-приложение;
  • Вы cможете добавлять задачи в свой список дел;
  • Вы cможете редактировать или удалять эти задачи;
  • Ваш список виден только вам, поэтому он использует аутентификацию через электронную почту и пароль.

Изучение структуры папок

Laravel — приложения следуют шаблону проектирования архитектуры MVC (Model-View-Controller).

  • Модели (Models) представляют сущности в базе данных, помогают запрашивать базу данных и возвращать данные.
  • Представления (View) – это страницы, которые будут отображаться при доступе к приложению. Элементы представлений используются для пользовательского интерфейса приложения.
  • Контроллеры (Controllers) обрабатывают запросы пользователей, получают необходимые данные от моделей и передают их представлениям. Контроллеры действуют как посредники между компонентами модели и представления для обработки бизнес-логики, а также входящего запроса.

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

Давайте разберём некоторые из них

Пошаговое создание вашего первого приложения на Laravel

Создайте ваш проект

Если вы не создали свой проект в разделе установки, создайте его сейчас, выполнив следующую команду:

Настройте базу данных

Для нашего приложения нам понадобится база данных, поэтому лучше всего создать её в первую очередь. Laravel поддерживает четыре СУБД:

В этом примере мы будем пользоваться SQLite, так как её проще настроить и использовать. И вам не придется ничего устанавливать – нужно будет всего лишь создать один пустой файл. Другие СУБД должны быть установлены в вашей системе, только потом их можно настраивать соответствующим образом. Laravel позволяет файлу config/database.php настраивать базу данных, но лучше не хранить в нем учетные данные. Вместо этого вы можете использовать файл .env , в котором можно хранить различные типы учетных и других данных.

В корневой папке Laravel по умолчанию находится файл .env .

В этом файле вы найдете код, похожий на следующий:

Замените все шесть строк, приведенные выше на одну строку, указанную ниже, то есть измените значение db_connection на sqlite и удалите остальные строки db, как здесь:

Теперь в папке базы данных создайте файл database.sqlite (это файл базы данных с расширением .sqlite)

Создайте аутентификацию

Есть два способа добавить Jetstream в ваше новое Laravel-приложение. Если вы еще не создали проект, добавьте флажок

для новой команды Laravel:

Так как выше мы уже создали проект, вы можете установить его с помощью установочного пакета. Сначала установите пакет Jetstream , используя следующую команду:

Jetstream в Laravel поддерживает два стека ~ Liveware или Inerta. Поскольку мы хотим, чтобы этот проект был простым, давайте воспользуемся Livewire и установим Jetstream с помощью следующей команды:

На данном этапе мы закончили с настройкой и можем приступать непосредственно к созданию приложения.

Миграции

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

Ничего страшного, если это объяснение показалось вам непонятным. Поверьте, скоро у вас всё получится. Просто читайте дальше.

Выполните следующую команду:

Вы найдёте только что созданную миграцию в папке /database/migrations.

Теперь давайте добавим еще два столбца в таблицу задач, отредактировав только что созданный файл миграции.

Теперь мы закончили с созданием схемы базы данных. Чтобы использовать эту схему для создания таблиц в базе данных, выполните следующую команду. Команда migrate обновит изменения, внесенные в схему, в базе данных.

Модели -Eloquent

Eloquent – это ORM (система объектно-реляционного отображения) для Laravel, которая позволяет свободно применять active-record для работы с базой данных. Каждая таблица базы данных может иметь соответствующую модель Eloquent. Модель Eloquent представляет объекты базы данных. Она может использоваться для запроса данных, а также для вставки и обновления данных в таблице. Итак, давайте с помощью команды make: model создадим модель для нашей таблицы задач.

Эта команда создаст модель задачи в папке приложения, как показано ниже.

Давайте отредактируем модель задачи и модель пользователя, чтобы создать отношения Eloquent.

Модель задачи (файл task.php находится в app/task.php):

Модель пользователя (файл user.php находится в app/user.php):

Команда Tinker в Artisan (необязательно)

В Laravel существует интерфейс командной строки, известный как Artisan. Artisan содержит различные команды, и среди них – Tinker, которую мы собираемся обсудить. Tinker позволяет вам взаимодействовать со всем вашим Laravel- приложением через окно консоли без необходимости доступа к веб-интерфейсу. Основным преимуществом Tinker является то, что вы можете тестировать отношения, отлаживать данные и получать доступ к Eloquent ORM, задачам, тестам, событиям и т. д. Поэтому мы также будем использовать команду Tinker в нашем руководстве по Laravel. Допустим, вы зарегистрировались в приложении и создали две задачи. Теперь вы проверяете эти задачи прямо в окне консоли, как показано ниже:

Tinker напрямую обращается к базе данных, так что это отличный инструмент для тестирования функций, а также данных.

Контроллеры

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

Маршрутизация

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

  • Авторизоваться;
  • Зарегистрироваться;
  • Показать список всех наших задач;
  • Добавить новые задачи;
  • Удалить существующие задачи.

Laravel Jetstream добавляет вход и регистрацию, поэтому теперь нам нужно позаботиться только о трех маршрутах.

Теперь давайте отредактируем файл web.php . Ниже вы увидите отредактированную версию этого файла. Внесите соответствующие изменения:

Здесь мы внесли два изменения:

  1. Мы сгруппировали все маршруты, чтобы можно было применять auth: sanctum и проверенное промежуточное программное обеспечение ко всем маршрутам, тем самым давая доступ к этим страницам только проверенным пользователям, вошедшим в систему.
  2. Мы изменили маршрут для панели управления, который теперь будет передавать запрос в функцию index в TaskController . Также мы создали маршруты для других действий.

Представления – шаблоны Blade

Представления хранятся в папке resources/views . Представления — это интерфейс Laravel- приложения, который разделяет логику приложения и логику представления. Нам нужно создать и настроить следующие представления:

  1. blade.php (панель управления покажет список задач);
  2. blade.php (форма, которая позволит вам добавить новую задачу);
  3. blade.php (форма, которая позволит вам отредактировать любую задачу).

Laravel включает в себя довольно удобный макет, который содержит панель навигации под названием app.blade.php , расположенную в папке Views / layouts . С помощью механизма Blade в Laravel вы cможете разделить свои страницы на подсекции, а также использовать раздел панели навигации по умолчанию в новых представлениях.

Теперь в папке / resources / views создайте файлы add.blade.php и edit.blade.php с разметкой, приведенной ниже.

В файле dashboard.blade.php также замените весь код на тот, который приведен выше. Представления мы отредактируем позже, после определения функций нашего контроллера с помощью привязки модели к маршруту.

Привязка модели к маршруту (Route-Model Binding)

В Laravel есть множество удивительных функций, которые делают веб-разработку простой, чистой и менее трудоемкой. Одна из наиболее заметных функций подобного рода – привязка модели к маршруту (Route-Model Binding). Это механизм для внедрения экземпляра модели в ваши маршруты. Это значит, вы можете передавать объект модели в маршруты, а также в представления по маршрутам. Эта функция поможет вам легко получить значения объекта в представлении. Ничего страшного, если это объяснение кажется непонятным. Со временем вы все поймёте.

Теперь давайте добавим в TasksController.php функции, обрабатывающие указанные выше маршруты. Они должны выглядеть так, как показано ниже:

Редактируем представления

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

Откройте файл dashboard.blade.php и отредактируйте его следующим образом:

Откройте файл add.blade.php и отредактируйте его следующим образом:

Откройте файл edit.blade.php и отредактируйте его, как показано ниже:

После редактирования этого представления мы собираем все части воедино, так что теперь сможем протестировать своё приложение.

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

Запускаем проект на Localhost

Чтобы запустить проект, запустите в окне терминала команду php artisan serve. Убедитесь, что вы находитесь в корне вашего приложения в терминале.

Обязательно прочтите инструкции, прежде чем копировать код с github .

Что делать с этим проектом дальше:

Существует множество вещей, которые можно добавить в этот проект, например:

  • Проверка формы:
  • Разрешение пользователю создавать несколько списков с несколькими задачами;
  • Профиль пользователя;
  • И многое другое.

Заключение

В этом длинном руководстве по Laravel мы узнали, как установить Laravel, настроить базу данных, а также такие основные вещи, как маршруты, модели, представления и контроллеры, а также создали ваше первое приложение на Laravel — приложение для составления списка задач.

Надеюсь, что это руководство по Laravel помогло вам понять основы Laravel, а также мотивировало вас учиться дальше. Пожалуйста, поделитесь своим мнением о Laravel и об этом руководстве. А также вы можете делиться в комментариях к этой статье вашими вопросами и проблемами. Будем рады вам помочь. Спасибо.

Пожалуйста, оставьте свои отзывы по текущей теме материала. За комментарии, подписки, дизлайки, отклики, лайки низкий вам поклон!

Пожалуйста, оставьте свои отзывы по текущей теме материала. За комментарии, лайки, отклики, подписки, дизлайки низкий вам поклон!

Вам интересно, как пакеты Laravel с открытым исходным кодом разрабатываются с нуля? Это учебное пособие, чтобы ответить на этот вопрос и помочь вам разработать его на реальном примере. С тегами php, laravel, разработка пакетов.

Вам интересно, как пакеты Laravel с открытым исходным кодом разрабатываются с нуля? Или вы не уверены, подходит ли какая-либо конкретная функциональность для использования в качестве пакета Laravel?

Давайте сегодня поговорим об этих и других связанных с ними вопросах.

Мы все являемся поклонниками Laravel и его экосистемы за ее простоту и расширяемость. Пакеты играют важную роль в продвижении вперед. Особенно официальные пакеты от Laravel, Spatie , Барри В.д. , и другие сделали нашу жизнь и код лучше.

Почему вы должны создать пакет Laravel

Лучшие навыки программирования

Открытый исходный код — это волшебство. Публикация вашего кода на всеобщее обозрение делает вас немного уязвимым в начале, но раскрывает все лучшее в вас. Страх сделать что-то не так мешает каждому из вас выполнять мастер git push origin но это всегда того стоит. Серия Laracasts управление проектами с открытым исходным кодом может очень помочь, если вы плохо разбираетесь в GitHub.

Больше (и лучше) работа

Вы создадите свой бренд, ведущий к большему количеству работы.

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

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

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

Кстати, внесение вклада в существующее решение также является отличным способом начать, если у вас уже есть пакет/библиотека с открытым исходным кодом по вашему выбору.

Новый пакет Laravel с нуля

Примечание: Я сказал, что мы будем создавать настоящий пакет. Размышляя над примером, единственным хорошим вариантом, который я мог придумать, был один из моих собственных пакетов — Laravel LogEnhancer . Он достаточно короткий, чтобы быстро охватить, а также играет важную роль в разработке пакетов, чтобы правильно изучить основы.

Если вы раньше не создавали никаких пакетов Laravel, я настаиваю, чтобы вы сделали это со мной. Это будет весело . Даже если вы сделаете тот же пакет, у вас будет больше уверенности и вы будете вдохновлены на то, чтобы немедленно внести изменения или создать новый. Все шаги невыполнимы — вам нечего терять. А истинное обучение — это все, что нужно делать практически. Наши требования являются основными. Если вы уже запускаете какое-либо приложение Laravel локально, у вас есть все это.

1. Новый каталог пакетов

Создайте каталог с именем пакета. Я назову это laravel-лог-усилитель .

2. Любовь к мерзавцу

Инициализируйте репозиторий git. Нам понадобится репозиторий GitHub, чтобы разместить пакет в Интернете.

Каждый пакет начинается с файла composer.json . Давайте создадим его. Самый простой способ создать его — запустить команду init .

Или вы можете просто скопировать его из этой заглушки и внести соответствующие изменения.

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

4. Пространство имен и автоматическая загрузка

Мы поместим основной код нашего пакета в каталог src .

Кстати, как и при разработке веб-приложений Laravel, здесь нет жестких правил о структуре каталогов, но есть полезное соглашение, которому нужно следовать.

Мы обновим ваш файл composer.json для 2 важных вещей.

  • Когда проект Laravel использует наш пакет, мы можем сообщить ему о расположении файлов загружаемого пакета, указав путь в части автоматической загрузки PSR-4 composer.json .
  • Чтобы упростить установку для разработчика, мы поместим местоположение поставщика услуг, которое должно автоматически определяться Laravel, в дополнительный раздел файла.

По автозапуск родительское веб-приложение Laravel знает о нашем базовом пространстве имен, т.е. Fresh biz web\laravellogenhancer и расположении файлов, которое является каталогом src . И Laravel потрясающий обнаружение пакетов функция помогает нам удалить шаг из процесса установки пакета.

5. Дилемма поставщика услуг:

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

Распространенное мнение заключается в том, что нам всегда нужен поставщик услуг для пакета. Это не тот случай. Если ваш пакет не нуждается в автоматической загрузке любые ресурсы заранее, он может пропустить поставщика услуг. Но в большинстве случаев для того, чтобы пакет был достаточно полезным, требуется поставщик услуг.

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

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

И в методе register мы говорим приложению Laravel добавить параметры конфигурации из вашего файла в конфигурацию веб-приложения. Зафиксируйте обновление и давайте создадим наш конфигурационный файл следующим.

6. Параметры конфигурации:

В рамках соглашения мы поместим ваш конфигурационный файл в каталог config внутри корневой папки рядом с каталогом src.

Поместите следующий код в файл.

Этот файл содержит несколько параметров конфигурации, как и обычный конфигурационный файл Laravel. Совершать.

7. Классы пакетов

Последним фрагментом кода для фактического улучшения журналов Laravel является LogEnhancer.php файл. Чтобы сохранить объем статьи удобоваримым, я напрямую свяжу вас с фактическим классом , который вы можете скопировать. У нас также есть RequestDataProcessor.php в упаковке. Поместите их обоих в каталог src и ты должен быть готов к отъезду.

8. Другие важные файлы

Есть еще несколько файлов, которые нам нужно добавить окончательно.

Файл README нуждается в особом упоминании здесь. Это лицевая сторона упаковки. Вы должны написать подробные инструкции по установке и другие примечания с надлежащим потоком в этом файле. Просмотрите это Руководство GitHub для получения дополнительной информации.

Внесите это изменение, и теперь наш пакет готов к использованию.

Что дальше? Пришло время выпустить его.

Как освободить пакет

Если вы еще не отправили код пакета на GitHub, сделайте это первым. Если вы не знаете как, эта статья может помочь.

Поздравление. Мы закончили. Дышите несколько минут. Это еще не все.

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

Как использовать пакет локально

Нам не нужно размещать обновления в Интернете, прежде чем тестировать их локально. Репозитории композиторов — путь к спасению.

Не только пакет, мы можем сделать это с любым репозиторием. Вот отличная статья , объясняющая детали.

Давайте сделаем это. Установите новое приложение Laravel рядом с каталогом пакетов.

Внесите изменения в его composer.json файл

Установите пакет, выполнив следующую команду.

Выполните шаги по установке и вы можете воспользоваться пакетом прямо сейчас.

Тестирование

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

И это не трудно. Все, что нам нужно сделать, это проверить, выполняет ли пакет то, что он должен делать после каждого изменения/фиксации. В этом пакете мы добавляем процессоры в обработчики монологов, чтобы можно было регистрировать больше данных.

К сожалению, на данный момент Monolog не предоставляет метода для извлечения процессоров обработчика, поэтому мы ограничены, но давайте создадим базу тестирования для этого пакета, чтобы вы знали, как добавлять тесты в свой пользовательский пакет.

Для начала мы добавим требования к файлу composer.json .

Мы в основном тестируем пакет, который находится за пределами приложения Laravel. orchestral/testbench — отличный пакет, который может добавить необходимые зависимости, чтобы мы могли протестировать его так, как будто у нас есть все преимущества Laravel.

Я также добавил следующие файлы, чтобы создать базу для тестирования нашего приложения.

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

Интеграции

Существует так много полезных инструментов, которые интегрируются с репозиторием GitHub и помогают нам легко поддерживать пакеты/библиотеки.

Я предлагаю Travis CI для тестирования пакета после каждого обновления и Стиль для поддержания стиля кода.

Я уже интегрировал стиль в пакет. Вам также следует рассмотреть возможность добавления значков в файл README.

Секретный соус успешной упаковки

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

Если бы я должен был принять решение о наиболее важном моменте для этого, это было бы дружелюбие разработчика пакета. Да, именно по этой причине Laravel пользуется популярностью.

Постарайтесь свести к минимуму этапы установки и код, необходимый для использования пакета. Кроме того, он должен быть достаточно читаемым , чтобы его не нужно было комментировать длинными комментариями.

Так просто, мы знаем, что эта операция включает в себя запросы на объединение и другие вещи. Тем не менее, вам нравится писать и читать это. Делайте вещи на аналогичном уровне.

Заключительные примечания

Вот и все на сегодня. Мы узнали, почему разработка пакетов полезна для всех и как это сделать шаг за шагом на реальном примере. Если у вас есть какие-либо вопросы или вы где-нибудь застряли, просто добавьте комментарий ниже, я буду рад помочь.

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

Laravel
Пакеты, решения, нюансы, примеры и прочее для фреймворка Laravel

Laravel → Конечные автоматы для Eloquent

Eloquent State Machines

Laravel Eloquent State Machines - это пакет Андре Сантибаньеса(Andrés Santibáñez), который упрощает переход состояний Eloquent-моделей:

В эти выходные я начал работать над новым пакетом для @laravelphp, реализующий управоение конечными автоматами для моделей Eloquent. Было прикольно и я многому научился в процессе.

Я только что тегнул версию v1.0.0. Наслаждайтесь!

Отзывы приветствуются!

- Андрес Сантибаньес (@asantibanez) 7 декабря 2020 года

Laravel → Создаём REST API с помощью Laravel Orion

Building REST APIs with Laravel Orion

Вы заметили, что при создании API вы часто продолжаете писать один и тот же код снова и снова? Вы создаете контроллер для [назовите свою сущность здесь] с методами для составления списка, создания, отображения, обновления и удаления этой [сущности]. Затем вы создаете другой контроллер, и это происходит снова и снова. Затем вам нужно написать некоторые кастомные методы (endpoint'ы) только для поддержки обновления отношения или поля в сводной таблице. Звучит знакомо, не правда ли?

Laravel → При разработке локально используйте queue:listen вместо queue:work

Use queue:listen instead of queue:work when developing locally

Laravel имеет мощную систему очередей, и когда вы используете очереди, вам нужно запускать обработчики. Как правило, в рабочей среде вы используете команду queue:work для их запуска, но это долгоживущие процессы, которые хранят загруженное состояние приложения в памяти. Таким образом, это означает, что после того, как вы внесете какие-либо изменения в код, вам нужно будет перезапустить их, чтобы они использовали новый код.

Laravel → Жадная загрузка в моделях маршрутов


TLDR: перезапишите метод resolveRouteBinding в вашей Eloquent-модели для жадной загрузки (eager loading) отношений, которые понадобится использовать.

Laravel → GroupBy по нескольким значениям в Laravel

В Laravel начиная с версии 5.5.29 можно группировать коллекции по нескольким критериям. Давайте посмотрим, что это означает и как это работает.


Подготовка

Итак, эта статья о новой функциональности в фреймворке Laravel. Но прежде чем мы посмотрим как она работает сейчас, давайте посмотрим как она работала раньше. Метод groupBy является методом класса Collection . Для наших примеров я создам немного данных, с которыми мы будем работать. Students будет фабрикой состояний для передаваемого класса User .

Laravel → Использование Laravel'овских строк перевода(локализации) во Vue.js


Одина из проблем, с которой вам придется столкнуться при создании мультиязычного сайта — это то, как держать в порядке ваши строки переводов для серверной стороны и для JavaScript компонентов. Я собираюсь продемонстрировать основные приёмы реализации этого, используя в моих примерах Laravel и Vue.js.

Laravel → Мгновенный ajax-поиск на Laravel и Vue

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


Пролог: официальный пакет для реальной работы

Если вам нужен аккуратный и хорошо поддерживаемый вариант поиска Eloquent-моделей, то Laravel предоставляет для этого официальный пакет. Laravel Scout является пакетом основанным на технике драйверов и реализующий полнотекстовый поиск по Eloquent-моделям. В настоящее время в качестве драйвера он поддерживает только Algolia, но вы можете легко использовать собственный драйвер поиска.

Приступая к работе

В результате должно получиться следующее: мы набираем что-то в поле ввода и отправляем на сервер AJAX-запрос с заданными ключевыми словами. На back-end-е мы получаем ключевые слова и достаём модели, которые соответствуют данному запросу.

Т.к. то, что мы хотим описать в статье - это не более чем демонстрация, то back-end и front-end будут достаточно простыми. Что мы действительно хотим здесь подчеркнуть - ключевые моменты и фичи, которые делают поиск более удобным.

Laravel → Жадная загрузка в Laravel: load() или with()?

Прим. пер.: Это небольшая заметка о работе методов ::with() и ::load() Laravel Eloquent-а, которую должен знать каждый разработчик, пишущий на Laravel. Тут ничего нового, но, как оказывается, не все об этом знают.

Сегодня, работая с одним из моих проектов (который написан на фреймворке laravel) я столкнулся с ситуацией, когда мне нужно для одной из моделей получить данные по другим моделям, связанные с этой. Так вот, для этого у меня есть два варианта, предоставляемых Laravel-ом, которые обычно называют жадной загрузкой:

Оба метода достигают тех же конечных результатов — жадной загрузки моделей в первую. На самом деле, они оба запускают одни и те же два запроса. Какой выбрать?

Laravel → Авторизация из коробки в Laravel 5.2

Если вы похожи на меня, то многие приложения, которые вы пишите с помощью Laravel, имеют схожий каркас: регистрация пользователя, вход, сброс пароля, страница публичных продаж, информационная панель (dashboard) для залогиненного пользователя, маршрут выхода и базовые стили Bootstrap, если вы только начали разработку.

Раньше всё это присутствовало прямо из коробки (примечания переводчика: указанные ниже файлы-шаблоны присутствовали в скелетоне приложения, который разворачивался при установке, — не в самом фреймворке). К моему великому огорчению, это исчезло в последнее время, но теперь эти заготовки доступны через Artisan-команду make:auth (примечания переводчика: и это правильно):

Command line output of artisan make:auth

Какие возможности это нам предоставляет? Давайте копнём глубже.

Laravel → Ограничение скорости API в Laravel 5.2

В последнее время всё больше и больше моих работ на Laravel связано с созданием API. У меня есть свой класс для ограничения скорости, который я использовал, но у меня было ощущение, что есть способ сделать это чище. Неудивительно, что, когда Тейлор решил написать middlewere ограничения скорости для Laravel, он сделал это чище и лучше, чем у меня.

Laravel → Неявная привязка модели при роутинге в Laravel 5.2

Этот функционал нельзя назвать новым, и route model binding уже давно есть в Laravel, но в Laravel 5.2 он стал ещё проще.

Laravel → Валидация массива формы в Laravel 5.2

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

Краткое введение в массивы HTML-формы

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

Laravel → Middleware groups in Laravel 5.2

Когда вы пишете крупный проект на Laravel`е, то ваш файл маршрутизации (routes.php) как правило, становится довольно большим. В первую очередь я группирую роуты на логически отдельные секции. Например "admin", "auth", "public". Обычно каждая из этих групп получает свой собственный набор http-посредников (middleware) — "admin", например, получает auth . Конечно, группа маршрутов для API может использовать другой auth посредник (middleware), а он — использовать специфические для API ограничения или что-то еще.

недоступна в laravel 5, но как теперь создать пакет в laravel 5?

Требуется авторизация

Вы должны войти, чтобы оставить комментарий.

msturdy - 1 месяц назад

Самый простой способ - просто принять входящий запрос и извлечь нужные переменные в контроллере:

а затем в SearchController@search :

Полезно, что вы можете установить значения по умолчанию в Input::get() если ничего не передано вашему действию Controller.

Как говорит joe_archer, нет необходимости помещать эти термины в URL, и это может быть лучше как POST (в этом случае вам следует обновить ваш вызов Form::open() а также ваш поисковый маршрут в route.php - Input::get() остается прежним)


0

birchy - 7 месяцев назад

Я тоже боролся с этим и, наконец, получил его на работу.

Примечания: Мне нужно было передать два поля ввода в URI. Я еще не использую Eloquent, если это так, отрегулируйте логику базы данных соответственно. И я не делаю защиты данных, введенных пользователем, так что простуда. Обратите внимание на поле скрытой формы "_token", и все "использование" включает, они необходимы.

PS: Вот еще один синтаксис, который, кажется, работает, и не нуждается в


0

Fabian M - 7 месяцев назад

У меня была такая же проблема. Мне нужно показать URL-адрес поисковой системы

Я использую два маршрута, подобные этому

Сначала используется для отображения URL-адреса, как мы хотим

Второй, который используется формой и перенаправляется на первый


0

Jonathan - 3 месяца назад

Альтернатива msturdy solution использует запрос вспомогательного метода, доступный для вы.

Это работает точно так же, без необходимости импортировать пространство имен Input use Illuminate\Support\Facades\Input в верхней части вашего контроллера.


0

Joe - 7 месяцев назад

Итак, вы пытаетесь найти поисковый запрос и категорию в URL?

Я бы посоветовал это сделать, поскольку вам придется иметь дело с многословными поисковыми терминами и т.д., и может закончиться всевозможными неприятностями с запрещенными символами.

Я бы предложил POSTing данные, дезинфицируя его, а затем возвращая страницу результатов.

Маршрутизация Laravel не предназначена для приема запросов GET из форм, она предназначена для использования сегментов URL в качестве параметров получения и построена вокруг этой идеи.


0

Ayoub Bousetta - 1 год назад


0

b.b3rn4rd - 9 месяцев назад

В качестве альтернативы, если вы хотите указать ожидаемые параметры в сигнатуре действия, но передайте их как произвольные аргументы GET . Используйте фильтры, например:

Создайте маршрут без параметров:

Задайте действие с двумя параметрами и прикрепите фильтр:

Фильтр, переводящий GET в аргументы действия:


0

Nicolas Beauvais - 2 месяца назад

Рабочее место laravel было переименовано в laravel 5 в "Разработка пакетов" в документации


0

tabacitu - 5 месяцев назад

Если вы уже знакомы с созданием пакетов в Laravel 4, самым быстрым решением, которое я нашел, было использование этого инструмента CLI.


0

maytham-ɯɐɥʇʎɐɯ - 9 месяцев назад

У меня был похожий сценарий в Laravel, и я решил его следующим образом.

Пароль содержит символы как минимум из трех следующих пяти категорий:

Во-первых, нам нужно создать регулярное выражение и проверить его.

Ваше регулярное выражение будет выглядеть так:

Я проверил и подтвердил это на этом сайте. Тем не менее, действуйте по-своему и корректируйте соответственно. Это только пример регулярных выражений, вы можете манипулировать так, как вы хотите.

Итак, ваш окончательный код Laravel должен быть таким:

Обновление Как упоминается в комментарии @NikK, в Laravel 5.6 значение пароля должно быть заключено в квадратные скобки, например

Я протестировал и проверил его как на сайте регулярных выражений, так и в тестовой среде Laravel 5, и он работает. Я использовал min: 6, это необязательно, но всегда полезно иметь политику безопасности, отражающую различные аспекты, одним из которых является минимальная длина пароля. Я предлагаю вам использовать подтвержденный пароль, чтобы убедиться, что пользователь вводит правильный пароль. В пределах 6 символов наше регулярное выражение должно содержать как минимум 3 буквы az или AZ, а также число и специальный символ. Всегда проверяйте свой код в тестовой среде, прежде чем переходить к производству. Обновление: то, что я сделал в этом ответе, является просто примером пароля регулярного выражения

Некоторые онлайн ссылки

Читайте также: