キャンパス遺失物プラットフォームの開発
——laravel boxアーキテクチャに基づいています最小限のコンテンツ管理システムを構築します
概要
現在の大学キャンパスの人口密度の高さ、頻繁な群集活動を考慮して、物が失われやすい 作業効率の低さ、回収率の低さ、守秘義務の低さ、管理の分散化など、従来の遺失物処理の基本的な現状分析を踏まえ、問題点や不備を解決するため、WEBモデルの遺失物情報管理プラットフォームを提案した。このプラットフォームは主に、従来の遺失物管理プロセスにおける情報サイロの欠点を解決し、遺失物作業の効率を向上させ、教師と生徒の直接的な経済的損失を軽減し、遺失物情報を公開する機能を通じて教師と生徒の利便性を高めます。そして日常生活での遺失物の回収。 このシステムは、開発環境として LAMP (ubuntu+Apache+MySQL+php) を使用します。バックエンド php フレームワーク は、現在人気のある laravel フレームワークを使用し、MVC 設計パターン に完全に従っています。フロントエンドviewフレームワークには、モバイル端末ページレイアウトによく適応できる国産のオープンソースレスポンシブHTML5開発フレームワークAmazeUIが選ばれています。
キーワード: キャンパス、遺失物管理システム、php、MySQL 1. ビジネスプロセス分析3. システム
モジュール設計 1. 機能モジュール 2. ユーザーインターフェース 4. コア機能の実装 1. 技術的フレームワーク 3. データベース設計 4.5. コアコードの実装6. テストと操作手順
5. まとめ
6. 参考文献
はじめに1. 大学生は多くのものを持ち、多くの活動を行っています。頻繁に別の場所に移動するため、忘れ物が起こりやすいのが現状です。現在、本校では生徒の忘れ物を見つけるための有効なシステムが不足しています。大学生は一般にインターネットを使用しており、キャンパスネットワークのカバー範囲が広いことを考慮すると、遺失物管理を明確かつ透明にする、遺失物管理を最適化する便利かつ効率的な方法として、インターネットを介して遺失物管理システムが導入されます。 、操作が簡単、管理が簡単です。このシステムを通じて、遺失物の所有者は最新の発見通知を公開して全員に通知することができ、所有者はこのプラットフォームを通じて遺失物の所有者を見つけて連絡することができます。また、ウェブサイトの登録ユーザーである限り、管理記事を投稿したり、メッセージを残すことができます。これにより、財産の損失を回避するだけでなく、人々の間のコミュニケーションも強化されます。したがって、この遺失物プラットフォームの開発により、教師や学生のキャンパス内での生活が大幅に楽になることは間違いなく、忘れ物の発見などの些細なことを心配する必要がなくなり、テクノロジーが真の意味で役に立ちます。 2. システム実現可能性分析 技術的実現可能性サーバー環境として安定したubuntulinux
を使用し、クライアントとサーバー間の通信をApacheが処理し、MySQLデータベース
ユーザー情報と公開記事を保存します。メッセージを残してください。PHP をバックエンド言語として使用して動的なページ処理を実現し、シンプルでエレガントな応答性の高いフロントエンド開発フレームワークと組み合わせることで、要件を満たす管理システムを開発できます。経済的実現可能性
ウェブサイトプラットフォームの開発とその後の運用と保守には、人的資源と物的リソースがほとんど必要なく、学校のサーバーに展開され、ネットワークサービスセンターのスタッフによって均一に管理されます。
-
社会的実現可能性
キャンパスでは、同級生が給湯室の入り口で何度も探しているのに、なぜまた見つからないのかと言う光景をよく見かけます。 、仕方なくまた探しながら。あるいは、このシーンの「拾得物の通知~寮の番号、落とし物、最後に拾ったのに返さない人を呪う」みたいな、既存の遺失物事務は面倒で非効率なので、そうなるのかもしれません。遺失物管理システムを構築することが非常に重要です。
システム要件分析
1. ビジネスプロセス
ビジネスプロセス分析は、開発者がビジネスプロセスを理解し、システム調査作業におけるエラーや欠落を発見して対処するのに役立ちます。ビジネス プロセス分析は、所定のシンボルと接続を使用して特定のビジネス プロセスを表すビジネス プロセス図を通じて実行されます。
このシステムの具体的なビジネス プロセスを以下の図に示します。
<br>
ビジネス プロセス.PNG
2. ユーザー エクスペリエンス分析
ユーザー エクスペリエンスは、今日の製品開発プロセスにおいて非常に重要視されている側面です。私たちが開発した製品やサービスは、最終的には技術的な側面を重視したり気にしたりしないユーザーを対象としているため、インターフェイスの使いやすさ、直感性、操作のしやすさを考慮する必要があります。この遺失物発見システムは、次の原則に従って動作します:
実用性: このシステムは、ユーザーのニーズをターゲットにしており、実際の操作の詳細を十分に考慮しているため、一般のユーザーがすぐに確認できます。ページを開いた瞬間に操作手順が一目瞭然です。これはまさに教師と生徒にサービスを提供するプラットフォームを構築し、ユーザーのオンライン忘れ物クエリリリースに利便性を提供します。
- 保守性: Web サイトのデザインは、明確なファイル ディレクトリとコード構造により、簡単な保守を必要とします。
- 拡張性: Web サイトは、将来の拡張やシステム拡張を容易にするように設計されており、システム要件を簡単にアップグレードでき、機能モジュールを簡単に追加できます。
システムモジュール設計1. 機能モジュールこの管理システムは主に
ユーザー登録、ユーザー(管理者)ログイン、ホームページ表示、遺失物公開、掲示板、バックエンド管理を実現できます。
- ユーザー登録:主にユーザー情報の登録と管理を実現する機能
- ユーザー(管理者)ログイン:主にユーザー(管理者)を実現する機能ログイン機能
- ホームページモジュール:このモジュールは主に遺失物の表示、機能の追加、詳細の表示と各モジュールへの入り口に使用されます
- メッセージボードモジュール:主にメッセージ機能を実現するために使用されますユーザー(管理者)向けのフィードバック
- バックエンド管理:ユーザー情報管理、落し物管理、掲示板メッセージ管理、管理者情報管理、タグ管理
-
本システムの主な機能構成は図の通りです。以下:
機能構造図.PNG<br>
- 登録ページ
- : このインターフェースは主に登録ユーザーの情報を収集し、それをシステムデータベースに保存しますログインページ: このページは、ログインしているユーザーの情報に基づいて、ログインを確認するための入力を行います
- ホーム ページ: このページには、ユーザーが投稿した落し物と拾得物、および記事のタグが表示されます
- メッセージボードページ: このページには、過去のメッセージとメッセージを追加するためのセクションが表示されます
- ユーザー情報ページ: このページには、現在ログインしているユーザーの情報と公開記事の管理が表示されます
- 管理ページ: このページは管理者がこのウェブサイトのさまざまなセクションを管理するための視覚的な操作ページ
コア機能の技術的実装
1. 開発環境
ウェブサイトのローカル開発環境は、lamp (つまり、Linux+Apache+MySQL+PHP) を使用します。 Lamp は、動的な Web サイトやサーバーを構築するために一般的に使用されるオープン ソース ソフトウェアのセットです。ただし、これらは一緒に使用されることが多いため、より高い互換性があり、強力な Web アプリケーション プログラム プラットフォームを形成します。 Lamp のすべての開発ツールはオープンソース ソフトウェアであり、オープンソースのトレンドの活発な発展に伴い、Lamp はコストがゼロで豊富な学習教材があるため、当然のことながら Web 開発の主流になることが予想されます。私の好みの開発環境。
2. 技術的なフレームワーク
バックエンド PHP フレームワークは、「最も簡潔でエレガントな PHP Web 開発フレームワーク」としても知られる、人気のある海外のオープンソース フレームワークである laravel を使用します。 Laravel の目標は、アプリケーションの機能を犠牲にすることなく、開発者にとって快適な開発プロセスを作成することです。 PHP 開発を学び始めて間もなく、いくつかの PHP フレームワークについてほとんど知りませんでしたが、csdn で「PHP 開発フレームワーク人気ランキング: Laravel のトップ」という記事を見て、Laravel というフレームワークがあることを知りました。ファイルディレクトリとコード構造が明確で、MVC 設計パターンに基づいており、初心者に優しいため、このフレームワークを選択したのは、laravel フレームワークの学習と実践としてかなりの部分を占めると考えられます。 。中国でも広く使われている国産の thinkPHP フレームワークなど、PHP アプリケーション フレームワークは数多くありますが、その構造的なコードはシンプルで直接的であり、使いやすいです。 、コード仕様の点でさまざまな評判があり、初心者には適切なコーディング習慣を身につけられないため、やめてください。
以下は、laravel フレームワーク アーキテクチャの簡単な紹介です。
Laravel は、ネットワーク サービスからデータベース管理、HTML 生成まですべてを処理できるため、「フルスタック」フレームワークと呼ばれます。垂直統合された Web 開発環境は、開発者に優れたエクスペリエンスを提供します。開発者は、コマンドラインツールを使用してLaravelプロジェクト環境を生成および管理できます。 Laravel には、フレームワーク コードとデータベース スキーマの生成に使用できる Artisan と呼ばれる優れたコマンド ライン ツールが付属しており、データベース スキーマの移行からリソースと構成の管理まですべてを処理できます。
Laravel プロジェクトは、composer を使用して作成されます (Composer は、PHP で依存関係 (dependency) 関係を管理するために使用されるツールです。プロジェクト内で依存する外部ツール ライブラリ (ライブラリ) を宣言できます。Composer は、それを支援します。これらの依存ライブラリ ファイルをインストールします)。 Linux ターミナルで次のコマンドを実行します:
$ combos create-project laravel/laravel --prefer-dist web 5.1
は /home ディレクトリに web という名前のプロジェクト フォルダーを作成します。指定された laravel バージョンは 5.1 です。そのディレクトリ構造は以下の通りです:
<br>
071625168621849.png
以下は各フォルダーとファイルの基本的な紹介です:
theトップレベルフォルダー)、 | model(model)、ビュー(ビュー)、およびas settが含まれています。 s(リソース)。これらは Web サイトを実行する主要なコード部分であり、ほとんどの時間をこれらのコードに費やすことになります。 ブートストラップ 启 システムの起動時にシステムを保存するために必要なファイル。index.php などのファイルによって呼び出されます。 | ||||||||||||||||||||||||||||||||||||||||||
このフォルダーは外部から見える唯一のフォルダーであり、Web サーバーのディレクトリを指す必要があります。このディレクトリには、laravel フレームワークのコアブートファイルindex.phpが含まれています。このディレクトリは、css、 | JavaScript | 、画像などの公開可能な||||||||||||||||||||||||||||||||||||||||||
<br> | vendorは、一般的なlaravelアプリケーションでは、すべてのサードパーティコードを保存するために使用されます。これには、事前にパッケージ化された追加機能を含む窃盗ソースコードとその関連プラグインが含まれます。 |
ファイルとフォルダー | 機能 |
---|---|
/app/config/ | アプリケーションのランタイムルール、データベース、セッションなどを構成します。フレームワークのさまざまな側面を変更するための多数の 設定ファイルが含まれています。設定ファイルで返されるほとんどのオプションは PHP 配列 に関連付けられています。 |
/app/config/app.php | さまざまなアプリケーションレベルの設定、タイムゾーン、ロケール(ロケール)、デバッグモード、および固有の暗号化キー。 |
/app/config/auth.php | アプリケーション (つまり、認証 ドライバー プログラム) での認証の実行方法を制御します。 |
/app/config/cache.php | アプリケーションが応答時間を短縮するために キャッシュ を利用する場合は、ここでその機能を設定します。 |
/app/config/compile.php | ここで、「artisan optimize」コマンドによって要求されたコンパイル済みファイルを含めるために、いくつかの追加クラスを指定できます。これらは、基本的にアプリケーションへのすべてのリクエストに含まれるクラスである必要があります。 |
/app/config/database.php | には、データベースの関連構成情報、つまりデフォルトのデータベースエンジンと接続情報が含まれています。 |
/app/config/mail.php | は、メール送信エンジン、つまりSMTPサーバーの設定ファイルです。 |
/app/config/session.php | Laravel がユーザーセッション、つまりセッションドライバー、セッション lifetime を管理する方法を制御します。 |
/app/config/view.php | テンプレート システムのその他の設定。 |
/app/controllers | 基本的なロジック、データモデルの対話、アプリケーションのビューファイルの読み込みを提供するコントローラークラスが含まれています。 |
/app/database/migrations/ | には、データベースのすべてのバージョンを同期させながら、Laravel が現在のデータベースのスキーマを更新 できるようにするいくつかの PHP クラスが含まれています。移行ファイルは Artisan ツールを使用して生成されます。 |
/app/database/seeds/ | には、Artisan ツールがデータベース テーブルにリレーショナル データを設定できるようにする PHP ファイルが含まれています。 |
/app/lang/ | PHP ファイルには、アプリケーションのローカライズを容易にする strings の配列が含まれています。デフォルトでは、ディレクトリには英語の Pagination と Form Validation の言語行が含まれています。 |
/app/models/ | Modelは、アプリケーションの情報(データ)とそのデータを操作するためのルールを表すクラスです。ほとんどの場合、データベース内の各テーブルはアプリケーション内のモデルに対応します。アプリケーション ビジネス ロジックの大部分はモデルに集中します。 |
/app/start/ | アーティザン ツールとグローバルおよびローカル コンテキストに関連するカスタム設定が含まれます。 |
/app/storage/ | このディレクトリには、セッション、キャッシュ、コンパイルされたビューテンプレートなど、Laravel のさまざまなサービスの一時ファイルが保存されます。このディレクトリは Web サーバー上で書き込み可能である必要があります。このディレクトリは Laravel によって管理されており、私たちは気にしません。 |
/app/tests/ | このフォルダーは、単体テストを実行するのに便利な場所を提供します。 PHPUnit を使用する場合は、Artisan ツールを使用してすべてのテストを一度に実行できます。 |
/app/views/ | このフォルダーには、コントローラーまたはルーターで使用される HTML テンプレートが含まれています。このフォルダーにはテンプレート ファイルのみを配置できることに注意してください。 CSS、JavaScript、画像ファイルなどの他の静的リソース ファイルは、/public フォルダーに配置する必要があります。 |
/app/filters.php | このファイルには、アプリケーションの結果を変更するために使用できるさまざまなアプリケーションとルートのフィルタリング メソッドが含まれています。 Laravel には、アクセス制御と XSS 保護のための事前定義されたフィルターがいくつかあります。 |
/app/routes.php | これはアプリケーションのルートファイルです。このファイルには、受信リクエストをルート処理されるクロージャ 関数、コントローラー、およびアクションに接続する方法を Laravel に指示するルーティングルールが含まれています。このファイルには、エラー ページの宣言を含む、ビュー コンポーザーの定義に使用できるいくつかの event 宣言も含まれています。 |
3. Model-View-Controller (MVC)
/app フォルダーの下には、models/、views/、controllers/ の 3 つのサブディレクトリがあります。これは、laravel が MVC アーキテクチャ パターンに従っていることを示しています。これにより、プレゼンテーション ロジックに組み込まれる「ビジネス ロジック」をグラフィカル ユーザー インターフェイス (GUI) から分離する必要があります。 laravel Webアプリケーションに関する限り、ビジネスロジックは通常、ユーザーや記事などのデータモデルで構成されます。 GUI はブラウザ上の単なる Web ページです。 MVC デザイン パターンは、Web 開発の分野で非常に人気があります。
MVC パターンには 3 つのコンポーネントが含まれています:
model
-
view Tコントローラー
- 以下に示すように、典型的なlaravelアプリケーションには上記のMVCコンポーネントが含まれています:
<br>
laravelの応答プロセス<br>
Laravelと対話するとき、ブラウザはリクエストを送信し、Webサーバーはリクエストを受信してLaravelルーティングエンジンに渡します。 Laravel ルーティングはリクエストを受信し、ルートの URL パターンに基づいて適切なコントローラー クラス メソッドにリダイレクトします。その後、コントローラー クラスが引き継ぎます。場合によっては、コントローラーは、HTML に変換されてブラウザーに送り返されるテンプレートであるビューをすぐにレンダリングします。動的 Web サイトの場合、より一般的に、コントローラーはモデルと対話します。モデルは、アプリケーション内の要素 (ユーザー、ブログ投稿など) を表し、データベースとの通信を担当する PHP
オブジェクト です。モデルを呼び出した後、コントローラーは最終ビュー (HTML、CSS、および画像) をレンダリングし、完全な Web ページをユーザーのブラウザーに返します。 Laravel は、モデル、ビュー、コントローラーを異なるディレクトリの個別のコード ファイルに保存することで、これらの要素を完全に独立させるべきであるという概念を推進しています。ここでLaravelのディレクトリ構造が登場します。
——Laravel ドキュメント
4. データベース設計'database' => DB_DATABASE', 'web'),まず、MySQL データベースで web という名前のデータベースを作成し、次のように laravel のデータベース構成ファイル /config/database.php を構成します。 :
'mysql' => ['mysql',
'host' => env('DB_HOST', 'localhost'),
'ユーザー名' => env('DB_USERNAME', 'root'),
'パスワード' => env('DB_PASSWORD', 'sheng'),'charset' => ; 'UTF8',
'Collation' = & GT; ',' Strict '= & GT;<br><br>Mysql データベースは次のようになります。 <br><br><br><br><br>Selection_015.png<br><br>いくつかのテーブルの説明: <br>
articles: ユーザーが公開した遺失物および拾得物を保存します
article_tag: 公開された記事のタグ
migrations: PHP がデータを移行するときに生成されます。コア機能 <br>tags: ユーザータグ
users: ユーザーアカウント情報の保存
5. コアコードの実装
Web プログラムは、すべてのコードを紙に書き込むと何も起こりません。サイズを 1 つずつ説明するのは非現実的であるため、コードの中核となるビジネス ロジック部分のみが選択され、必要な説明が付けられます。フロントエンドでは、AmazeUI レスポンシブ開発フレームワークと
jQueryJavaScript ライブラリが使用されます。これは、人気のあるブートストラップに似ているため、フロントエンドの p、css、その他のスタイルについてはあまり説明がありません。
主な説明は次のとおりです:
ルーティング管理
ユーザー管理 (ユーザーの登録、情報の変更、ユーザーのロックなど)
記事の公開、記事の変更などの記事管理
タグ管理、記事には1つ以上のタグが付けられます
データベース管理、例えば移行、データの入力など
Webフォーム検証
ブレードテンプレートエンジン
ページング処理
安全処理
laravelはブレードテンプレートエンジンを使用するため、ビューファイルはxxx.blade.php、webの形式で名前を付ける必要があります/resources/views/ ファイル フォルダー下のディレクトリ構造は図のとおりです。
<br>
selection_017.png
websiteentry file 最初に読み込まれるビューファイルはlayouts/です。 defalut.blade.php:
<br>
<br><meta charset="UTF-8"> <title>キャンパス遺失物プラットフォーム</title> <meta http-equiv="X-UA 互換" content="IE=edge"> ビューポート" content="<a href="http://www.php.cn/wiki/835.html" target="_blank" _href="http://www.php.cn/wiki/835.html">width</a>=デバイス幅, 初期スケール=1.0, 最小スケール=1.0, 最大スケール=1.0, ユーザー<a href="http://www.php.cn/wiki/1518.html" target="_blank" _href="http://www.php.cn/wiki/1518.html">scala</a>ble=no"> <meta name="<a href=" http: target="_blank" _href="http://www.php.cn/wiki/125.html">マット検出用" content="telephone=no"/> <meta name="renderer" content="webkit"> <meta http-equiv="Cache-Control" content="no-siteapp"> <link rel="代替アイコン" type="image/x-icon" href="%7B%7Basset('img/favicon.ico')%20%7D%7D"> <link rel="stylesheet" href="http://cdn.amazeui.org/amazeui/2.7.1/css/amazeui.min.css"> <link rel="stylesheet" href="%7B%7Basset('css/custom.css')%7D%7D"> <script src="//cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<br><br><br>topbar am-topbar-fixed-top"><br><p class="am-container"> </p> <h1 class="am-topbar-brand"> <a href="/">キャンパス遺失物プラットフォーム</a> </h1> @<a href="http://www.php.cn/wiki/137.html" target="_blank" _href="http://www.php.cn/wiki/137.html">include</a>('layouts.nav')
<br><br>@yield('main')<br>@include('layouts.footer')<br><br>
amazeui フロントエンド フレームワーク ファイルと jQuery ファイルは、ローカルにロードする必要がなく cdn ネットワーク上に保存されるため、Web サイト フォルダーの構造が簡素化されます。
asset('img/favicon.ico') は http://localhost:8000/img/favicon.ico を生成します
asset('css/custom.css') は 、img フォルダーと css フォルダーは public ディレクトリに配置されます。 directory はプロジェクトのリソースフォルダーです
@include('layouts.nav') には、テンプレート用の app/views/layouts/nav.blade.php ファイルが含まれます
-
ほとんどのビュー ファイルは、index.blade.php:
など、default.blade.php のテンプレート フレームワークを継承します。
@extends('layouts.default')
@section('main')
<p class="am-g am-g-fixed"><br> </p><p class="am-u-md-8"><br> <!-- 循环输出文章 --><br> @foreach ($articles as $article)<br> <article class="blog-main"><br> <h3 class="am-article-title blog-title"> <br> <a href="%7B%7B%20URL::route('article.show',%20%24article->id)%20%7D%7D">{{{ $article->title }}}</a><br> </h3> <br> <h4 class="am-article-meta blog-meta"> <br> 由 <a href="%7B%7B%20URL::to('user/'%20.%20%24article->user->id%20.%20'/articles')%20%7D%7D">{{{ $article->user->nickname }}}</a> 发布于 {{ $article->created_at->format('Y/m/d H:i') }} 标签:<br> <!-- 输出标签 --><br> @foreach ($article->tags as $tag)<br> <a href="%7B%7B%20URL::to('tag/'%20.%20%24tag->id%20.%20'/articles')%20%7D%7D">{{ $tag->name }}</a><br> @endforeach<br> </h4> <br> <p class="am-g"><br> </p> <p class="am-u-sm-12"><br> @if ($article->summary)<br> </p> <p>{!! $article->summary !!}</p> <br> @endif<br> <hr class="am-article-pider"> <br> </article></p><br> <br> <br> @endforeach<br> <br>
@extends('layouts.default') は、@section('main') に対応する app/views/layouts/default.blade.php ファイル
-
@yield('main') を継承します。
ユーザー ログイン フォーム (login.blade.php ファイル内) の内容は次のとおりです:
Laravel とほとんどの PHP フレームワークは、ルートを使用して URL を生成し、http リクエストを処理します。ユーザーのログイン データの検証も、ルーティング ファイル (web/app/route.php) に配置されます:
//ログイン後データ<br>Route ::post('ログイン', function()
{<br> //数据验证规则<br> $rules = array(<br> 'email' => 'required|email',<br> 'password' => 'required|min:6',<br> 'remember_me' => 'boolean',<br> );<br> $validator = Validator::make(Request::all(), $rules);<br> //验证通过<br> if ($validator->passes())<br> {<br> if (Auth::attempt([<br> 'email' => Request::input('email'),<br> 'password' => Request::input('password'),<br> 'block' => 0], <br> (boolean) Request::input('remember_me')))<br> {<br> return Redirect::to('home');<br> } <br> //账号或密码错误<br> else {<br> return Redirect::to('login')->withInput()->with('message', array('type' => 'danger', 'content' => 'E-mail or password error'));<br> }<br> } <br> //数据格式错误<br> else {<br> return Redirect::to('login')->withInput()->withErrors($validator);<br> }<br>});<br>
//ホームページにアクセスします<br>Route::get('home', ['middleware' => 'auth', function()<br>{<br> return view('home');<br>}]);
登録操作ルート:
Route::post('register', function()<br> {<br> $rules = [
'email' => 'required|email|unique:users,email',<br> 'nickname' => 'required|min:4|unique:users,nickname',<br> 'password' => 'required|min:6|confirmed',<br>
]];<br> $validator = Validator::make(Request::all(), $rules);<br> if ($validator->passes())<br> {
$user = new App\User();<br> $user->email = Request::input('email');<br> $user->nickname = Request::input('nickname');<br> $user->password = Hash::make(Request::input('password'));<br> if ($user->save())<br> {<br> return Redirect::to('login')->with('message', array('type' => 'success', 'content' => 'Register successfully, please login'));<br> } else {<br> return Redirect::to('register')->withInput()->with('message', array('type' => 'danger', 'content' => 'Register failed'));<br> }<br>
} else {
return Redirect::to('register')->withInput()->withErrors($validator);<br>
}<br> });
上記のフォーム検証ルールの unique:users,email により、users テーブルの電子メール フィールドが一意であることが保証されます。たとえば、既存の電子メールを入力すると、次のエラー メッセージが表示されます。
<br>
<br>
namespace App;use IlluminateAuthAuthenticatable;ユーザーは複数の記事を持つことになります。 Article.php:use IlluminateDatabaseEloquentModel;<br>IlluminateAuthPasswordsCan<br>ResetPasswordを使用します;IlluminateContractsAuthAuthenticatableをAuthenticatableContractとして使用します;<br>IlluminateContractsAuthCanResetPasswordをCanResetPasswordContractとして使用します;<br>
クラスユーザーが実装するモデルを拡張しますAuthenticatableContract、CanResetPasswordContract {<br>
use Authenticatable, CanResetPassword;<br>リーリー }
namespace App;<br>use IlluminateDatabaseEloquentModel;<br>use IlluminateDatabaseEloquentSoft<br>Deletes; //Use soft delete traitclass Article extends Model記事には複数のタグがあり、1 人のユーザーに属します。 Tag.php:{ <br>rrリー リーリー リーリー
}
namespace App;IlluminateDatabaseEloquentModelを使用;1つのタグに複数の記事が含まれます。 この記事IlluminateDatabaseEloquentSoftDeletesを使用;<br>
classタグはModel{<br>rrreeを拡張します リーリー リーリー
}
エディタはマークダウンエディターを使用しています。マークダウンのシンプルでエレガントなレイアウト形式により、記事のスタイルをより美しくすることができます(ある程度の学習コストが必要な場合もあります)
向数据库中添加文章,要用到MVC中的control了./web/app/http/Controllers/ArticleController.php的核心代码如下:
namespace App\Http\Controllers;<br>use Illuminate\Http\Request;<br>use App\Http\Requests;<br>use App\Http\Controllers\Controller;<br>use Markdown;<br>use Validator;<br>use App\Article;<br>use Auth;<br>use App\Tag;<br>use Redirect;<br><br>class ArticleController extends Controller<br><br>******<br>******<br><br> //保存文章<br>public function store(Request $request)<br>{<br> $rules = [<br> 'title' => 'required|max:100',<br> 'content' => 'required',<br> 'tags' => ['required', 'regex:/^\w+$|^(\w+,)+\w+$/'],<br> ];<br> //数据校验<br> $validator = Validator::make($request->all(), $rules);<br> if ($validator->passes()) {<br> $article = Article::create($request->only('title', 'content'));<br> $article->user_id = Auth::id();<br> $resolved_content = Markdown::parse($request->input('content'));<br> $article->resolved_content = $resolved_content;<br> $tags = explode(',', $request->input('tags'));<br> //添加 summary<br> if (str_contains($resolved_content, '<p>')) {<br> $start = strpos($resolved_content, '</p><p>');<br> $length = strpos($resolved_content, '</p>') - $start - 4;<br> $article->summary = substr($resolved_content, $start + 3, $length);<br> } else if (str_contains($resolved_content, '')) {<br> $start = strpos($resolved_content, '<h>');<br> $length = strpos($resolved_content, '</h>') - $start - 4;<br> $article->summary = substr($resolved_content, $start + 4, $length);<br> }<br> $article->save();<br> //处理标签<br> foreach ($tags as $tagName) {<br> $tag = Tag::whereName($tagName)->first();<br> if (!$tag) {<br> $tag = Tag::create(array('name' => $tagName));<br> }<br> $tag->count++;<br> $article->tags()->save($tag);<br> }<br> return Redirect::route('article.show', $article->id);<br> } else {<br> return Redirect::route('article.create')->withInput()->withErrors($validator);<br> }<br>}<br>//展示文章详情<br>public function show($id)<br>{<br> return view('articles.show')->with('article', Article::find($id));<br>}<br>
上面代码实现了保存文章和显示文章的业务逻辑,保存文章时验证 tags 用了 regex 正则表达式来验证标签是否用逗号分隔。
用户修改已经发布的文章的核心代码如下:
@extends('layouts.default')<br> <br> @section('main')<br>
<br>
<h1 id="Edit-Article">Edit Article</h1><br> <hr><br> @if ($errors->has())<br> <p class="am-alert am-alert-danger" data-am-alert><br> </p><p>{{ $errors->first() }}</p><br> <br> @endif<br><br><br>
<br>
<p class="am-popup-hd"><br> </p><h4 class="am-popup-title"></h4><br> <span data-am-modal-close></span> class="am-close">×<br> <br> <p class="am-popup-bd"><br> </p><br>
<br>
<br> <script><br/> $(function() {</script>
$('#preview').on('click', function() {<br> $('.am-popup-title').text($('#title').val());<br> $.post('preview', {'content': $('#content').val(),'_token':$('#token').val()}, function(data, status) {<br> $('.am-popup-bd').html(data);<br> });<br> $('#preview-popup').modal();<br> });<br>
});<br>
<br> @endsection
标签是为了给用户发布的文章分类,便于查找相关信息,其核心代码实现为:
@extends('layouts.default')<br><br>@section('main')
<br>
<br>
<br><table class="am-table am-table-hover am-table-striped "> <thead> <tr> <th>TagName</th> <th>ArticleCount</th> <th>CreateDateTime</th> <th>Managment</th> </tr> </thead> <tbody> @foreach ($tags as $tag) <tr> <td>{{{ $tag->name }}}</td> <td>{{ $tag->count }}</td> <td>{{ $tag->created_at->format('Y-m-d H:i') }}</td> <td> <a href="%7B%7B%20URL::to('tag/'.%20%24tag->id%20.%20'/edit')%20%7D%7D" class="am-btn am-btn-xs am-btn-primary"><span class="am-icon-pencil"></span> Edit</a> <form action="%7B%7B%20URL::to('tag/'.%24tag->id.'/delete')%7D%7D" method="get" accept-charset="utf-8" style="<a href=" http: target="_blank" _href="http://www.php.cn/wiki/927.html">display: inline;"> <button type="button" class="am-btn am-btn-xs am-btn-danger" id="delete{{ $tag->id }}"> <span class="am-icon-remove"></span> Delete </button> </form> </td> </tr> @endforeach </tbody> </table>
<br><br>
<br>
<br> <br><script><br/> $(function() {</script>
$('[id^=delete]').on('click', function() {<br> $('.am-modal-bd').text('Sure you want to delete it?');<br> $('#my-confirm').modal({<br> relatedTarget: this,<br> onConfirm: function(options) {<br> $(this.relatedTarget).parent().submit();<br> },<br> onCancel: function() {<br> }<br> });<br>});<br>});<br><br>@endsection
错误处理:
如果用户访问的URL不存在或者服务器存在错误时,我们不希望返回一个默认的错误页面,而想返回一个友好提示的页面,在 Laravel 中可以很轻松地实现,Laravel有很简单的错误和日志处理,当服务器端存在错误时,app\Exceptions\Handler.php 里默认有一个报告所有异常的程序:
/**
* Report or log an exception.<br>*<br>* This is a great spot to send exceptions to Sentry, Bugsnag, etc.<br>*<br>* @param \Exception $e<br>* @return void<br>*/<br>public function report(Exception $e)<br> {
return parent::report($e);<br>}
当访问的URL不存在时,服务器会抛出一个 404 错误,laravel 对 HTTP 异常有特别的处理方式:
@extends('layouts.default')
@section('main')
啊哦,你访问的页面不存在!
<br>返回 首页
<br>@endsection
现在当你访问的 URL 不存在时,laravel 会自动到模板目录去寻找状态码为 404 的错误模板页面 404.blade.php
6、测试及操作说明
主页展示:
<br>
主页展示.png
整体页面做的比较简洁,因为我侧重在功能实现,故对界面设计方面没有花太多时间。
用户登录:
<br>
管理员登录.png
这里的登录注册使用了laravel框架的regex正则表达式匹配。
登录之后,会出现文章管理界面:
<br>
文章管理.png
这里随便添加了一些测试数据。
删除文章:<br>
<br>
预览文章.png
点击删除文章会调用一段js代码,实现模态弹出框。
发布文章:
<br>
发布信息.png
这个编辑器使用了markdown语法来编辑文字,可能对于普通用户来说有比较高的门槛,本想用富文本编辑器的,但是由于时间较为紧张,而markdown插件易于使用,故在beta版本中以此来暂时代替。
点击预览:
<br>
预览文章.png
这里也调用了js解析markdown,生成html。
发布之后:
<br>
失物招领启事详情.png
这样一个简单的失物招领启事发布管理系统就完成了,测试各功能正常。
总结
通过开发这个校园失物招领平台,其实就完成了一个最小内容管理系统,一个完整的内容管理系统包括这几个核心的模块:
用户管理
文章管理
-
标签管理
90%的网站功能开发都可以归纳为CRUD(即增删改查)操作,可能对于一个这样功能简单的管理系统来说,没有必要去使用重型的laravel框架,看起来有点过度设计了,但是我作为一个php初学者来说,也是想通过这个机会来学习一下这个优秀的框架,学习框架的过程也加深了对php语言的理解,对于以后开发更大型的网站能够积累一点相关经验。
这个系统目前还存在很多问题,比如界面不太符合失物招领的常规设计,有很多当初的设想也没能实现,markdown的编辑器不可能用在面向普通用户的网页中,入口首页和留言板功能由于时间关系没能加上,颇为遗憾。我希望以后能有时间去逐步地完善它,改造为我的个人博客,或者以此为基础,实现我一直以来的一个想法——搭建一个学生门户网站,当然这个工程量就非常大了。
この学習と成長のプロセス全体を振り返ってみると、それは簡単ではなかったと感じます。最も基本的なフロントエンドの html+css+js から始まり、php の基本構文、そして laravel フレームワークまで、このコースを完了するまでに多くの情報を調べ、オンライン moocビデオを 100 時間以上視聴しました。デザイン。私は、先人たちの無私な共有のおかげで、多くの回り道をする必要がなく、オープンソースの共有の精神の重要性を感じています。今日のインターネット産業は非常に繁栄しています。したがって、今後の学習プロセスでは、自分の回り道が他の人の架け橋になれるように、自分の個人的な経験を要約して共有することを常に忘れないようにする必要があると思います。
この作業を予定通り完了できたのも、チームの協力のおかげで、励ましと献身的な努力をしてくれた友人たちにも感謝したいと思います。
以上がLaravelフレームワークに基づくコンテンツ管理システムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
