/ / Crie um sistema baseado em plug-in como o Wordpress com Laravel / PHP - laravel, plug-ins, design modular

Crie um sistema baseado em plugins, como o Wordpress com Laravel / PHP - laravel, plugins, modular-design

Esta questão tem me incomodado há bastante tempoAgora, quero criar um cms, um Sistema de Gestão Escolar para ser mais específico, e o que mais importa para mim, é fazer esse plug-in do sistema baseado, de forma que os administradores possam baixar e instalar plug-ins direto do painel de administração, assim como o wordpress.

Agora eu li sobre o wordpress Ganchos, Ações e Filtros, e com toda a franqueza, posso dizer que estou um pouco familiarizado com sua funcionalidade, mas devo aplicar a mesma funcionalidade a um Laravel App..., É um pouco difícil de descobrir, pelo menos para mim.

Eu também pesquisei sobre esta questão e encontreique quase todo mundo está sugerindo pacotes, mas enquanto os pacotes podem funcionar muito bem para outros desenvolvedores que desejam usar a funcionalidade do pacote, eles não podem ser facilmente instalados por um usuário não familiarizado com nenhuma linguagem de programação, e isso é exatamente o que eu quero no meu aplicativo.

Agora, o que tenho em mente até agora, como em Ações Wordpress e Filtros, quase tudo que se deseja usar emArquivos de tema Wordpress (para tornar aquele pedaço de código flexível para adicionar funcionalidade de plugin) devem ser chamados como funções, e chamar essa função pelo Wordpress do_action () é uma espécie de caminho obrigatório, o que obviamente faz sentido.

Desta forma, os desenvolvedores de plug-ins podem simplesmente chamar add_action () / add_filter () em seus arquivos e colocar seus plug-ins no fluxo do aplicativo. Então...

Basicamente, o que estou perguntando aqui é:

  • Como aplicar essa funcionalidade a um aplicativo laravel?
  • Existe uma maneira mais fácil do que chamar tudo por uma função como do_action ()?
  • Devo escrever algum tipo de módulo de gerenciamento de arquivos para baixar e atualizar plug-ins?

Mais uma vez, devo dizer que não estou muito familiarizado commaneiras do wordpress para atingir esse tipo de funcionalidade, então posso estar errado sobre algumas das descrições que mencionei acima, mas por favor, agradeço qualquer esclarecimento sobre este assunto, se possível.

Agradecemos antecipadamente por qualquer insight.

* P.S. Tentei ser o mais claro possível sobre o problema e não estou procurando nenhum método específico para o sistema que estou desenvolvendo. O que eu quero é saber os métodos comuns / melhores (se houver um método melhor) para obter tal funcionalidade, de preferência no Laravel, mas um algoritmo geral ainda seria muito apreciado.

Sei que muitas pessoas têm a mesma pergunta e estão lidando com o mesmo problema, então, se você fornecer apenas um link para um artigo útil, seria ótimo. *

Respostas:

5 para resposta № 1

Trabalho como desenvolvedor Wordpress há muito tempo e também tenho bastante experiência em Laravel ... e para ser sincero, fazer esse tipo de funcionalidade não é nada difícil.

Como?

Em primeiro lugar, você deve entender que a webO aplicativo que você vai fazer terá todas as funcionalidades, mas elas só podem ser habilitadas / desabilitadas no front-end (Painel de Administração / Dashboard). Em outras palavras, seu aplicativo do Sistema de Gestão Escolar está, na verdade, com todos os recursos / funcionalidades pré-instalados, mas você está apenas permitindo que os usuários o habilitem / desabilitem. Isso é muito mais simples.

Então, se por exemplo. você quer fornecer a alguém attendance management funcionalidade, você terá que dar ao administrador do site o acesso para habilitá-lo / desabilitá-lo.

Por quê?

Wordpress tem uma interface de usuário integrada para adicionar / atualizarplugins. Mas no Laravel, tudo é baseado em código e, portanto, acredito que seja a maneira mais simples de fazer (especialmente para tornar as coisas em seu aplicativo plugáveis).

Passos

  1. Faça um site com UI etc ...
  2. Crie um arquivo de configuração e migração que terá os nomes de todos os plug-ins que você permitirá que o usuário habilite / desabilite.
  3. Faça um comando de sincronização que irá sincronizar todos os plug-ins em seu aplicativo.
  4. Use-o para renderizar uma página no front-end e gerenciar seu status no back-end (is_active etc etc ...)
  5. Agora, uma vez que esses plug-ins estão ativos, certifique-se de que o usuário (digamos, moderador, editor) tenha acesso para gerenciá-los, para os quais você obviamente terá que criar funções / permissões e usar Políticas do Laravel para essas coisas.
  6. Por último, apenas o administrador terá a habilitação / desabilitação de gravações e mais ninguém.

Por outro lado, você deseja que as pessoas desempenhem suas próprias funções com filtros/ações. Eu diria que isso é completamente contraditório com a parte onde você diz Installing Laravel Packages isn"t easy. Bem, se você realmente deseja que um desenvolvedor faça isso, por que não pedir imediatamente a ele para fazer um pacote apenas para seu aplicativo? Hmmmm .... Pense nisso :)

Mas, mesmo assim, se você gostaria de criar tal funcionalidade, crie uma classe simples que o usuário possa chamar e usar suas funções para chamar suas próprias funções ... Algo como -> SMSPlugin::do_action(). Mas, novamente, fazer coisas como atualizar / excluir o plug-in exigirá que você crie seu próprio Loja de plugins e peça aos usuários para fazer upload para ele. Então você terá que fazer uma API para verificar constantemente se há atualizações para todos os plug-ins instalados e blá, blá ... É um procedimento muito longo ... E eu não acredito que seja viável também!

Espero ter respondido tudo. Deixe-me saber nos comentários se tiver alguma dúvida :)