Создать систему на основе плагинов, такую ​​как Wordpress с Laravel / PHP

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

Теперь я прочитал о WordPress Hooks, Actions и Filters, и, честно говоря, могу сказать, что я немного знаком с их функциональностью, но для того, чтобы применить ту же функциональность к Laravel App..., это немного сложно понять. по крайней мере для меня.

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

Теперь, что я имею в виду, что и в Wordpress Actions and Filters, почти все, что нужно использовать в файлах тем Wordpress (чтобы сделать этот фрагмент кода гибким для добавления функциональности плагина), следует называть функциями, и вызывать это Функция Wordpress do_action() является своего рода обязательным путем, что, конечно, имеет смысл.

Таким образом, разработчики плагинов могут просто вызывать add_action() / add_filter() в своих файлах и помещать свои плагины в поток приложения. Так...

В основном то, что я спрашиваю здесь:

  • Как применить такую ​​функциональность к приложению Laravel?
  • Есть ли более простой способ, чем вызывать все с помощью функции, такой как do_action()?
  • Должен ли я написать какой-то модуль управления файлами для загрузки и обновления плагинов?

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

Заранее спасибо за любые идеи.

* PS Я пытался как можно яснее разобраться в проблеме, и я не ищу какой-либо конкретный метод для системы, которую я разрабатываю. Что я хочу, так это знать общие / лучшие методы (если есть лучший метод) для достижения такой функциональности, предпочтительно в Laravel, но общий алгоритм все равно будет высоко оценен.

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

1 ответ

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

Как?

Прежде всего, вы должны понимать, что веб-приложение, которое вы будете создавать, будет иметь все функциональные возможности, но их можно включать / отключать только из внешнего интерфейса (панель администратора / панель инструментов). Другими словами, ваше приложение School Management System на самом деле имеет все предустановленные функции / возможности, но вы просто позволяете пользователям включать / отключать его. Это намного проще.

Так что, если, например. Вы хотите предоставить кого-то attendance management Функциональность, вам придется предоставить администратору сайта, доступ для включения / выключения его.

Зачем?

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

меры

  1. Сделать сайт с пользовательским интерфейсом и т.д...
  2. Создайте файл конфигурации и миграции, в котором будут имена всех плагинов, которые вы хотите разрешить / запретить пользователю.
  3. Сделайте команду синхронизации, которая будет синхронизировать все плагины в вашем приложении.
  4. Используйте его для рендеринга страницы из внешнего интерфейса и управления их состоянием из внутреннего интерфейса (is_active и т. Д. И т. Д.)
  5. Теперь, когда эти плагины активны, убедитесь, что пользователь (скажем, модератор, редактор) имеет доступ для управления ими, для чего вам, очевидно, придется создавать роли / разрешения и использовать Политики Laravel для таких вещей.
  6. Наконец, только администратор будет иметь включение / отключение записи и никто другой.

Для другой части, где вы хотите, чтобы люди выполняли свои собственные функции с фильтрами/действиями. Я бы сказал, что это полностью противоречит той части, где вы говорите Installing Laravel Packages isn't easy, Что ж, если вы действительно хотите, чтобы разработчик нашел выход из этого, почему бы сразу не попросить их сделать пакет для вашего приложения? Хмммм.... Подумай об этом:)

Но даже тогда, если вы хотите создать такую ​​функциональность, создайте простой класс, который пользователь может вызывать, и пользовательские его функции будут вызывать для своих собственных функций... Что-то вроде -> SMSPlugin::do_action(), Но с другой стороны, для обновления или удаления плагина потребуется создать собственный магазин плагинов и попросить пользователей загрузить его. Затем вам нужно будет создать API, чтобы постоянно проверять наличие обновлений для всех установленных плагинов и тому подобное... Это действительно длинная процедура... И я не верю, что это возможно!

Надеюсь, я ответил на все. Дайте мне знать в комментариях, если у вас есть какие-либо сомнения:)

Я знаю, что это было 2 года назад, но сейчас вы можете достичь этого с помощью laravel с некоторыми пакетами:

Поэтому я думаю, что шаги будут:

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

Так что я думаю, что это способ или, по крайней мере, некоторые пытаются сделать это в 2019 году:D

Счастливого нового года всем!

Для этого есть пакет, он поддерживает версию 5, еще не тестировал с 6:https://github.com/oneso/laravel-plugins

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