Alpaca-Spa-Laravelバックグラウンド管理システム-前面と背面の分離

lpaca-Spa-Laravelは、Alpaca-Spa + Laravelをフロントエンドとバックエンドから分離して開発したバックエンド管理システムのデモです。主な機能モジュールは、ログイン、時限タスク管理、ユーザー管理、権限管理、個人情報管理です。 、など。実際の開発では、特定のニーズに応じて新しい機能を追加することができます。開発モデルはフロントとバックで分離された開発です。Alpaca-Spaは、ページ構造の整理、ページデータ、スタイル、インタラクションロジックのレンダリングなど、フロントエンド機能の実装を担当します。Laravelは、バックエンド機能の提供、データベースへのアクセスを担当します。 、ビジネスロジックの処理、およびフロントエンドへのデータインターフェイスの提供http://www.tkc8.com


Alpaca-Spa-Laravelの紹介

Alpaca-Spa-Laravelは 、フロントエンドおよびバックエンドとは別に 開発されたバックエンド管理システムのデモです。Laravelはバックエンド機能の実装に使用され、Alpaca-Spaはフロントエンド機能の実装に使用され、データはJsonを介してフロントエンドとバックエンドの間で交換されます。

この例の主な機能は次のとおりです。

 ログインおよびログアウト
 ユーザー管理
 権限管理
 個人情報管理
 時限タスク管理

実際の開発では、特定のニーズに応じて新しい機能を追加することができます。

画像

デモアドレス

コンテンツ 説明 住所
アルパカ-スパ ホームページ http://www.tkc8.com
アルパカ-スパ-Laravel 舞台裏の管理 http://full.tkc8.com
アルパカ-スパ-スイ 携帯電話スイ http://full.tkc8.com/app
オスキナ コード http://git.oschina.net/cc-sponge/Alpaca-Spa-Laravel
github コード https://github.com/big-sponge/Alpaca-Spa-Laravel

バックエンド管理端末のログインアカウントは、閲覧機能のみで編集機能はないテストアカウントです。

インストール方法(ストレージ、ブートストラップディレクトリとそのサブディレクトリ、ファイルのアクセス許可に注意してください)

    開発環境が次の要件を満たしていることを確認し
    ます。PHP

    バージョン> = 5.6.4 
    PHP拡張機能:OpenSSL 
    PHP拡張機能:PDO PHP拡張機能:Mbstring 
    PHP拡張機能:Tokenizer PHP拡張
    機能:XML 

    (詳細参照:Laravel 5.4)

    ソースコードをダウンロードした、設定する必要がありますWebサーバーのルートディレクトリはパブリックディレクトリです。
    このディレクトリのindex.phpファイルは、アプリケーションに入るすべてのHTTPリクエストのフロントエンドプロセッサとして機能します。

    いくつかの権限を構成する必要があります。
    ストレージディレクトリとブートストラップディレクトリは、Webサーバーが書き込みを許可する必要があります。そうしないと、Laravelは書き込みを行うことができません。

    設定ファイルについて:

    ソースコードをダウンロードした、/ configディレクトリに.envファイルを作成してください。もちろん、.env.developmentをコピーして.envに名前を変更することもできます。
    個人のデータベースアクセスアカウントが構成ファイルに保存されている可能性があるため、gitバージョン管理に.envを追加することはお勧めしません。
    構成ファイルの詳細については、

    データベーススクリプトの「構成ファイル」の章を参照してください
    。/storage/sql/db_full.sql


    フロントエンド関数のみをローカルで表示する場合は、/ public /でg_urlの値を設定してください。 admin/index.html「http://full.tkc8.com/」に設定します。

    <script> 
            var g_baseUrl = "/"; //フロントエンドリソースルートパス(js、cssなど、ビューテンプレートで使用)
            var g_url = "/"; //バックエンドインターフェイスルートパス
            $(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 / "; // 
                alpaca -spaルートパスAlpaca.run("#/ main / index / index "); 
            }); 
    </ script >

    ローカルフロントエンドを使用して、サーバー(full.tkc8.com)によって提供されるインターフェイスにアクセスできます。

    ローカルに構成されたドメイン名が127.0.0であるとします。

ディレクトリ構造

| --app 
| --Common-いくつかのパブリッククラス、関数など
を配置するために使用されます
。| --Models-データベースに対応するエンティティクラスファイルを配置するために使用されます| --Modules-コントロールを含むモジュール関連情報を格納します
Server 、ビジネスロジックなど|| --Manage-バックエンド管理モジュール(サーバー)コード、前後の個別の開発、ここではJson形式のインターフェイスのみを返します
| | --Server ---ユーザーフロントエンドモジュールback- end(サーバー)コードは、上記と同じように、Json形式のインターフェースのみを返します
| ExceptionHandler.php-例外処理構成
| RouteProvider.php-ルーティング構成
| --bootstrap-は、メインのLaravelフレームワーク自体に付属するディレクトリです。関数は、アプリケーション初期化のいくつかの関連関数を提供することです(サブディレクトリを含む)
| --Console --Laravel Cli 
| --builder-コード自動生成ツール
| --crontab-タイミングタスクツール(非Linuxシェル)
| ---- config-構成ファイルディレクトリ
| .env-Laravelの外部.envをconfigディレクトリに移動しました
| --public-エントリディレクトリ。サーバーを構成するときは、Webサイトのルートディレクトリをpublicに設定する必要があります
| --admin-バックエンド管理モジュールのフロントエンド(クライアント)部分(ここではフロント- phpを含まないエンドおよびリアエンド開発コードは個別にデプロイすることもできます)
| --app-ユーザーのフロントエンドモジュールのフロントエンド(クライアント)部分(これがフロントおよびバック開発です。上記と同じ)
| index.php-phpエントリファイル
| --storage-ストレージプログラムランタイムログ、キャッシュ、セッション、およびその他のファイルには、読み取りおよび書き込み権限が必要です(サブディレクトリを含む)
| --vendor-コンポーザー関連ディレクトリ
| composer .json 
| composer.lock

ルーティング機能

各モジュールに独自のルーティング構成ファイルを用意することをお勧めします

1システム全体のルーティング組織構造はapp / RouteProvider.phpで構成できます2app 
/ Modules / Manage / router.phpは、Manageモジュールの関連ルーティングを構成します
3 app / Modules / Server / router.phpは、関連ルーティングを構成しますサーバーモジュールの
4bootstrap / builder /router.phpはコード生成ツール
のルーティングを構成します5bootstrap / crontab /router.phpはタイミングタスクツールのルーティングを構成します

構成ファイル

1構成ファイルは、元のLaravelルールと同じconfigディレクトリに保存されます

。2システム環境に関連する構成を処理します。

  環境変数MOD_ENV = DEVELOPMENTが設定されている場合、システムは.env.development構成ファイルをロードします。
  環境変数MOD_ENV = PRODUCTIONが設定されている場合、システムは.env.production構成ファイルをロードします。
  環境変数MOD_ENV = TESTが設定されている場合、システムは.env .test構成ファイルをロードします。
  それ以外の場合、.envt構成ファイルはデフォルトでロードされます。

アクセス制御

1権限機能を実現するために、データベースには、

  ユーザーテーブル、ロールテーブル、権限テーブル、ユーザーロール関係テーブル、およびロール権限関係テーブルの5つのテーブルがあります

  このようにして、user-role-authorityの対応する関係が確立されます。

2ログイン許可制御

  1)現在のコントローラーでの特定のアクションがログイン許可を必要としない場合:

      protected function noLogin()
      { 
          //次のアクションはログイン許可を必要としません
          return ['action1'、 'action2']; 
      }
      したがって、action1およびaction2ログインせずにアクセスできます

  2)現在のコントローラーの下のすべてのアクションがログイン権限を必要としない場合:

      protected function noLogin()
      { 
          this-> isNoLogin = true; 
      }
     現在のコントローラーの下のすべてのアクションがログイン権限を必要としないように、

3ロールパーミッションコントロールに直接アクセスできます

  1)現在のコントローラーでの特定のアクションがロールパーミッションコントロールを必要としない場合:

      protected function noAuth()
      { 
          //次のアクションはログインパーミッションを必要としません 
          return ['action1'、 'action2']; 
      }
     このように、アクション1とアクション2は、ロールの権限なしでアクセスすることができる。

  2)電流制御の下にあるすべてのアクションは、ログイン権限を必要としない場合:

      保護機能NOAUTH()
      { 
          this-> isNoAuth = TRUE; 
      }
     電流下ように、すべてのアクションコントローラはログイン権限なしで直接アクセスできます

  3)現在のコントローラで

      保護されている関数の下でアクションのロール権限を書き換えますnoAuth()
      { 
          return [ 
                'actionName' => function($ result){ 
                     if($ _ GET ['id'] == 1){ 
                        return true; 
                     } 
                 }、
          ]; 
      }

     アクションのロール権限制御関数は、アクションの関数を指定することでカスタマイズできます。

     関数にはパラメーター$ resultがあります。

     $ resultがtrueの場合、システムのデフォルトのロール権限制御が現在のアクションにアクセス権限があると判断することを意味し、falseはアクセス権限がないことを意味します。

タイミングタスク機能

    この例は、タイミングタスクを実装するためのPHPの機能を提供します(オペレーティングシステムに依存しない非Linuxシェルモード)。

    タイミングに適しており、正確な時間は1秒以上です。Webサービスの再起動、またはPHPの再起動。スケジュールされたタスクは自動的に再開されません。
    ほとんどの時間指定タスクの終了計画を処理するために使用できます。ストアは、定期的に商品を自動的に受信し、コメントを閉じ、注文をロールバックします。定期的にメールを送信し、データのバックアップやその他の

    実装原則、およびより詳細なコンテンツを送信してください。次の記事を参照してください:
    https://my.oschina.net/u/3381391/blog/1510260

画像

フロントエンド機能

    フロントエンドコードは
    public \ adminに保存され、public \ admin \ index.htmlはフロントエンドエントリファイルであり、
    public \ admin \ main \ controllerはフロントエンドメインモジュールのコントローラーを保存し、
    public \ admin \ main \ viewは、フロントエンドメインモジュールのビューページを格納します。

自動コード生成

コードを生成するためのツールがプロジェクトで提供されています:Alpaca-Builder

目的は、コードをすばやく記述し、繰り返しの作業を減らすことです。主な機能は、入力データベーステーブルの名前に従って次のコンテンツを生成することです。

1バックエンドエンティティクラスを
生成します2バックエンドコントローラーを
生成します3バックエンドルーティングを
生成します4フロントエンドJSコントローラーを
生成します5フロントエンド編集ページを
生成します6フロントエンドリストページを
生成します7構成インターフェイスURLを生成します
8コピーするかどうかを選択します対応するページへ

画像

アクセス方法、ブラウザにアドレスを入力してください:あなたのドメイン名\ビルダー

(注:構成ファイルでAPP_ENV = localの場合にのみ、アクセスが許可されます)

WebSocketを実行する

Linux環境、プロジェクトのルートディレクトリにある必要があります

#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} ListViewメソッド、リストページを表示し、バックグラウンドデータインターフェイスを呼び出してリストデータを検索します
       {name} ListDisplayメソッド、表示データをレンダリングします
       {name} EditViewメソッド編集ページを表示し、バックグラウンドインターフェイスを呼び出します
    4構成メニュー:
        パス:/ public / admin / view /layout/part/pageSidebar.html 
    5バックエンドインターフェイスを構成するには、構成ファイルにバックエンドアドレスを書き込むことをお勧めします。
        パス:/ public / admin / mainのAPI変数/main.js


プロジェクト画像

画像 


おすすめ

転載: blog.51cto.com/15127568/2667265