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.
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
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
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