Système de gestion d'arrière-plan Alpaca-Spa-Laravel - séparation avant et arrière

lpaca-Spa-Laravel est une DEMO d'un système de gestion back-end développé avec Alpaca-Spa + Laravel séparé du front et du back-end. Les principaux modules fonctionnels sont la connexion, la gestion des tâches chronométrées, la gestion des utilisateurs, la gestion des autorités, la gestion des informations personnelles , etc. Dans le développement réel, de nouvelles fonctions peuvent être ajoutées en fonction des besoins spécifiques. Le modèle de développement est un développement séparé avant et arrière. Alpaca-Spa est responsable de la mise en œuvre des fonctions frontales, y compris l'organisation de la structure des pages, le rendu des données des pages, les styles, la logique d'interaction, etc. , traitement de la logique métier et fourniture d'interfaces de données au front-endhttp://www.tkc8.com


Introduction à Alpaca-Spa-Laravel

Alpaca-Spa-Laravel est   une DEMO d'un système de gestion back-end développé séparément des extrémités avant et arrière . Laravel est utilisé pour implémenter des fonctions back-end, Alpaca-Spa est utilisé pour implémenter des fonctions front-end, et les données sont échangées entre les frontaux et les back-ends via Json.

Les principales fonctions de l'exemple sont:

 Connexion et déconnexion 
 Gestion des 
 autorités de gestion 
 des utilisateurs Gestion des informations personnelles Gestion 
 des tâches chronométrées

Dans le développement réel, de nouvelles fonctions peuvent être ajoutées en fonction des besoins spécifiques.

image

Adresse de démonstration

teneur Description adresse
Alpaga-Spa Page d'accueil http://www.tkc8.com
Alpaga-Spa-Laravel Gestion des coulisses http://full.tkc8.com
Alpaga-Spa-Sui Téléphone mobile sui http://full.tkc8.com/app
oschina Code http://git.oschina.net/cc-sponge/Alpaca-Spa-Laravel
github Code https://github.com/big-sponge/Alpaca-Spa-Laravel

Le compte de connexion sur le terminal de gestion back-end est un compte de test avec uniquement des fonctions de navigation et aucune fonction d'édition.

Méthode d'installation (assurez-vous de faire attention au stockage, au répertoire d'amorçage et à ses sous-répertoires, aux autorisations de fichiers)

    Assurez-vous que l'environnement de développement répond aux exigences suivantes: 

    Version PHP> = 5.6.4 
    Extension PHP: Extension PHP OpenSSL: Extension 
    PHP PDO 
    : Extension 
    PHP Mbstring: Extension 
    PHP Tokenizer : XML 

    (référence détaillée: Laravel 5.4) Après avoir 

    téléchargé le code source, vous devez vous configurer Le répertoire racine du serveur Web est le répertoire public. 
    Le fichier index.php de ce répertoire sert de processeur frontal pour toutes les requêtes HTTP entrant dans l'application. 

    Vous devez configurer certaines autorisations. 
    Les répertoires de stockage et d'amorçage doivent permettre à votre serveur Web d'écrire, sinon Laravel ne pourra pas écrire. 

    À propos du fichier de configuration: Après avoir 

    téléchargé le code source, veuillez créer un fichier .env dans le répertoire / config. Bien sûr, vous pouvez également copier .env.development et le renommer en .env. 
    Il n'est pas recommandé d'ajouter .env au contrôle de version git, car votre compte d'accès personnel à la base de données peut être stocké dans le fichier de configuration. 
    Pour plus de détails sur le fichier de configuration, reportez-vous au chapitre "Fichier de configuration" du 

    script de base de données: 
    /storage/sql/db_full.sql 


    Si vous souhaitez uniquement afficher les fonctions frontales localement, veuillez définir la valeur de g_url dans / public / admin / index.html Défini sur "http://full.tkc8.com/".

    <script> 
            var g_baseUrl = "/"; // Chemin racine de la ressource frontale (js, css, etc., utilisé dans le modèle de vue) 
            var g_url = "/"; // Chemin racine de l'interface back-end 
            $ (document ) .ready (function () { 
                g_baseUrl = "http: //" + window.location.host + "/ admin /"; 
                // g_url = "http: //" + window.location.host; 
                g_url = "http : // full. tkc8.com "; 
                Alpaca.Config.baseUrl =" / admin / "; // chemin racine de l'alpaga-spa 
                Alpaca.run (" # / main / index / index "); 
            }); 
    </ script > 

    afin que vous puissiez utiliser le frontal local pour accéder à l'interface fournie par le serveur (full.tkc8.com). 

    Supposons que votre nom de domaine configuré localement soit: 127.0.0.

Structure du répertoire

| --app 
| --Common - utilisé pour placer certaines classes publiques, fonctions, etc. 
| --Models - utilisé pour placer les fichiers de classe d'entité correspondant à la base de données 
| --Modules - stocke les informations relatives au module, qui contient les contrôles 
Serveur , logique métier, etc. | | --Gérer - code du module de gestion back-end (serveur), développement séparé avant et après, ici ne renvoie que l'interface au format Json 
| | --Server --- module frontal utilisateur back- end (Server) code, comme ci-dessus, ne renvoie que l'interface au format Json 
| ExceptionHandler.php - configuration de gestion des exceptions 
| RouteProvider.php - configuration de routage 
| --bootstrap - est un répertoire fourni avec le framework Laravel lui-même, le principal La fonction est de fournir Certaines fonctions liées à l'initialisation de l'application nécessitent des autorisations de lecture et d'écriture (y compris les sous-répertoires) 
| --Console - Laravel Cli 
| --builder - Outil de génération automatique de code 
| --crontab - Outil de tâche de synchronisation (shell non-linux) 
| - -config - répertoire du fichier de configuration
| .env - Déplacement du .env externe de Laravel dans le répertoire de configuration 
| --public - répertoire d'entrée, lors de la configuration du serveur, vous devez définir le répertoire racine du site Web sur public 
| --admin - module de gestion d'arrière-plan Le front-end (client) partie du (voici le développement séparé avant et arrière, ici ne contient aucun code php, peut également être déployé indépendamment) 
| --app - la partie front-end (client) du module front-end utilisateur (voici le développement séparé avant et arrière, comme ci-dessus) 
| index.php - fichier d'entrée php 
| --storage - stocke le journal, le cache, la session et d'autres fichiers lorsque le programme est en cours d'exécution et nécessite des autorisations de lecture et d'écriture (y compris les sous-répertoires) 
| --vendor - répertoires liés au compositeur 
| composer .json 
| composer.lock

Fonction de routage

Il est recommandé que chaque module possède son propre fichier de configuration de routage

1 La structure d'organisation du routage de l'ensemble du système peut être configurée dans app / RouteProvider.php 
2 app / Modules / Manage / router.php configure le routage associé de l'application Manage module 
3 / Modules / Server / router.php configure le routage associé du module Serveur 
4 bootstrap / builder / router.php configure le routage de l'outil de génération de code 
5 bootstrap / crontab / router.php configure le routage de l'outil de tâche de chronométrage

Fichier de configuration

1 Le fichier de configuration est stocké dans le répertoire config, qui est le même que les règles Laravel d'origine.2 

Il gère la configuration liée à l'environnement système. 

  Si la variable d'environnement MOD_ENV = DEVELOPMENT est définie, le système chargera le fichier de configuration .env.development. 
  Si la variable d'environnement MOD_ENV = PRODUCTION est définie, le système chargera le fichier de configuration .env.production. 
  Si la variable d'environnement MOD_ENV = TEST est défini, le système chargera le fichier de configuration .env .test 
  sinon le fichier de configuration .envt sera chargé par défaut

Contrôle d'accès

1 Pour réaliser la fonction d'autorisation, il existe 5 tables dans la base de données: 

  table des utilisateurs, table des rôles, table des autorisations, table des relations de rôle utilisateur et table des relations des autorisations des rôles. 

  De cette manière, la relation correspondante utilisateur-rôle-autorité est établie. 

2 Contrôle des autorisations de connexion 

  1) Si une certaine action sous le contrôleur actuel ne nécessite pas d'autorisation de connexion: 

      protected function noLogin () 
      { 
          // L'action suivante ne nécessite pas d'autorisation de connexion 
          return ['action1', 'action2']; 
      } 
      Donc action1 et action2 Vous pouvez accéder sans vous connecter 

  2) Si toutes les actions sous le contrôleur actuel ne nécessitent pas d'autorisations de connexion: 

      protected function noLogin () 
      { 
          this-> isNoLogin = true; 
      } 
     afin que toutes les actions sous le contrôleur actuel ne nécessitent pas d'autorisations de connexion Vous pouvez accéder directement au 

contrôle d'autorité de rôle 3 

  1) Si une action sous le contrôleur actuel ne nécessite pas de contrôle d'autorité de rôle: 

      protected function noAuth () 
      { 
      } 
          // L'action suivante ne nécessite pas d'autorisation de connexion
          return ['action1', 'action2']; 
     ainsi action1 et action2 peuvent être accédées sans autorisations de rôle 

  2) Si toutes les actions sous le contrôleur actuel ne nécessitent pas d'autorisations de connexion: 

      protected function noAuth () 
      { 
          this-> isNoAuth = true; 
      } De 
     cette façon, toutes les actions sous le contrôleur actuel peuvent être accédées directement sans avoir besoin de se connecter. 

  3) Réécrire les permissions de rôle d'une action sous la 

      fonction protégée du contrôleur actuel noAuth () 
      { 
          return [ 
                'actionName' => function ($ result) { 
                     if ($ _ GET ['id'] == 1) { 
                        return true; 
                     } 
                 }, 
          ]; 
      } 

     La fonction de contrôle d'autorisation de rôle de l'action peut être personnalisée en spécifiant une fonction pour l'action. La 

     fonction a un paramètre $ résultat,

     Si $ result est vrai, cela signifie que le contrôle d'autorisation de rôle par défaut du système juge que l'action en cours a l'autorisation d'accéder, et false signifie qu'il n'y a pas d'autorisation d'accès.

Fonction de tâche de chronométrage

    L'exemple fournit la fonction de PHP pour implémenter des tâches de chronométrage (mode non-linux-shell, indépendant du système d'exploitation). 

    Il convient au chronométrage et le temps précis n'est pas inférieur à 1 seconde. Redémarrage du service Web ou redémarrage de PHP. La tâche planifiée ne redémarrera pas automatiquement. 
    Il peut être utilisé pour gérer le plan final de la plupart des tâches chronométrées. Le magasin recevra automatiquement les marchandises à intervalles réguliers, fermera les commentaires et annulera les commandes; enverra des e-mails à intervalles réguliers, la sauvegarde des données et d'autres 

    principes de mise en œuvre et un contenu plus détaillé, s'il vous plaît reportez-vous à l'article suivant: 
    https: // my.oschina.net/u/3381391/blog/1510260

image

Fonction frontale

    Le code frontal est stocké dans 
    public \ admin , public \ admin \ index.html est le fichier d'entrée frontal, 
    public \ admin \ main \ controller stocke le contrôleur du module principal frontal et 
    public \ admin \ main \ view stocke la page d'affichage du module principal frontal.

Génération de code automatique

Un outil de génération de code est fourni dans le projet: Alpaca-Builder

Le but est d'écrire du code rapidement et de réduire le travail répétitif. La fonction principale est de générer le contenu suivant en fonction du nom de la table de la base de données d'entrée:

1 Générer la classe d'entité 
dorsale 2 Générer un contrôleur 
dorsal 3 Générer un routage dorsal 
4 Générer un contrôleur JS 
frontal 5 Générer une page d'édition 
frontale 6 Générer une page de liste frontale 
7 Générer l'URL de l'interface de configuration 
8 Sélectionner s'il faut copier vers la page correspondante

image

Méthode d'accès, entrez l'adresse dans le navigateur: votre nom de domaine \ constructeur

(Remarque: uniquement lorsque APP_ENV = local dans le fichier de configuration, l'accès est autorisé)

Exécutez WebSocket

Besoin d'être dans l'environnement linux, le répertoire racine du projet

#debug运行
php artisan ws start
#常驻后台运行
php artisan ws start --d

开发流程

    后端(服务端)部分:

    1 建立数据表
    2 编写模型类,放在/app/Models
    3 编写控制器类,放在模块的Controllers目录下面,例如: /app/Modules/Manage/Controllers/{name}Controller.php
    4 *(可选)如果有比较复杂的业务逻辑需要处理,可以加一个Service层,放在模块的Service目录下面
    5 路由配置:路由一般放在当前模块目录下面,例如:/app/Modules/Manage/router.php

    前端(客户端)部分:

    项目采用前后分离开发,因此前端代码会更独立,html文件中不含有任何php代码
    1 编写列表显示页面(两个html)
       /public/admin/view/{name}/{name}ListView.html       页面主体
       /public/admin/view/{name}/{name}ListDisplay.html    页面table部分
    2 编写编辑页面(新增和修改用一个)
       /public/admin/view/{name}/{name}EditView.html
    3 编写前端控制器,实现与后端数据交互, :
       路径:/public/admin/controller/{name}.js
       一般有三个方法:
       {name} Méthode ListView, affichez la page de liste, appelez l'interface de données d'arrière-plan pour trouver les données de liste 
       {nom} Méthode ListDisplay, restituez les données d'affichage 
       {nom} Méthode EditView Affichez la page d'édition, appelez l'interface d'arrière-plan 
    4 Menu de configuration: 
        Chemin : / public / admin / view /layout/part/pageSidebar.html 
    5 Pour configurer l'interface back-end, il est recommandé d'écrire l'adresse back-end dans le fichier de configuration: 
        Path: API variables in / public / admin / main /main.js


Image du projet

image 


Je suppose que tu aimes

Origine blog.51cto.com/15127568/2667265
conseillé
Classement