問題タブ [front-controller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - フロントコントローラーとは何ですか? また、どのように実装されていますか?
はじめに、私はPHPの初心者です。ここに質問を投稿しました: Refactoring require_once file in a project 。フロントコントローラーについてできる限り読み込もうとしましたが、それがどのように機能するか、またはそれが何であるかさえわかりません。
誰かがそれがどのように機能し、それが何であるかを簡単に説明できますか?
php - ファイルが見つからない場合の mod_rewrite リダイレクト
特定のファイルにトラフィックをリダイレクトするフロント コントローラーを使用する Web サイトを持っているので、SEO に適した URL を使用できますが、サイトにはトラフィックを転送したくない静的ページがいくつかあります。
現在、次の .htaccess があります。
これはうまくいくようです:
- すべてのトラフィックは に転送され
www.example.com
ます。 - そして、見つからない Web ページは
controller.php
処理するように指示されます。 www.example.com/about_us.php
まだ機能するなど、実際に存在するものはすべて動作します。
問題は、ページがまだ送信され、正しく表示されているにもかかわらず、404 エラーが報告されることです。エンド ユーザーには何も変わらないように見えますが、Google ボットが 404 を見て、あると想定するため、Google で SEO を台無しにしています。他には何もありません。
特定のページのリストとは別にすべてのトラフィックを単純にリダイレクトする方法はありますか、それともより洗練されたソリューションがありますか?
ヘルプ、考え、コメントなどは大歓迎です
.htaccess - Apacheを使用した画像を除いて、すべてのリクエストをファイルにリダイレクトするにはどうすればよいですか?
次の内容の.htaccessファイルがあります。
これで、すべてのリクエストをファイルにリダイレクトして、entryPoint.php
それらを調べることができるようにします。
- 拡張機能がない場合は、モジュールである必要があります
- .phpがある場合、それはハッキングです
.pngの場合は、「安全な」呼び出しです。
画像の場合、私はヘッダーと
file_get_contents()
そのコンテンツを出力していました。直接読み取りを残すよりも少し遅いことがわかりました。
私の質問は:
entryPoint.php
画像への参照がある場合にこの.htaccessが呼び出されないようにするにはどうすればよいですか?
私がすでに持っているコードに関する追加のフィードバックは大歓迎です!
jsf - JSF アプリケーションでの Qi4j
Qi4j では、コンポジットを組み立てる必要があります。JSF 2.0 アプリケーションでこれを処理する場所を教えてもらえますか? FrontController-Servlet を拡張する必要がありますか? それとも、アプリケーションがデプロイされて開始される時点でアセンブルするだけで十分ですか?
どうもありがとう!
php - PHP ファイル内に自分のサイトの他のページへのリンクを簡単に含める方法は?
次のプロセスをより自動化する方法があるかどうか疑問に思っていました (リンクが変更された場合、リンクは自動的に更新されます)。
フロントコントローラーを備えたPHPサイトがあります。
ここで、さまざまな PHP ファイル内で (ページへの) 特定のリンクを表示するにはどうすればよいのでしょうか? (実際には手動で行いたくありません...ページ名が変更された場合、すべてのファイルを手動でフリックする必要があるためです)。
基本的に私が探しているのは、自分のサイトのページへのリンクを簡単かつ自動的に含める方法です。
それらを構成配列に保存し、PHPファイルである種のラッパー/ヘルパー関数を使用して、構成配列からそれらを取得して表示するという考えがありました(ただし、それが最善の方法なのか、それとも他にあるのかはわかりません方法)?
おそらくWordPressがそれを行う方法のようなものです(私はそれに慣れていませんが、同様の手法を使用していると聞いています...)私が持っているのはマッピング配列(ページのURLを含む)と並んでフロントコントローラーです-それが役立つ場合。
すべてのアプローチと応答に感謝します。
php - Zend clear リクエスト パラメータ
Zend_Controller_Action アクション メソッド内で次のようになっている理由をお聞きしたかっただけです。
これを生成します:
「作成者」変数もクリアすべきではありませんか?
前もって感謝します!
php - PHPフロントコントローラーを使用した動的ルーティング
URLからコントロール名を取得し、index.phpで動的に正しいコントローラーと一致させようとしています。
私のアプリルート:/localhost/app/index.php
つまり、基本的に/localhost/app/index.php/homeと入力すると、home_controller.phpを含めようとします。これがコードです。
アプリのルート深度が3の場合は正常に機能します。localhost/first/ second / app / index.php/homeのようなアプリディレクトリを変更すると壊れます。
3で爆発するため、$ components [0]は「ホーム」ではなくなります。問題は、コントローラーパーツをより効率的に検出するにはどうすればよいかということです。
php - PHP レイアウト マネージャー
この質問は良いアドバイスを提供するほどのサポートではないため、ここでより実用的な質問をすることが許されるかどうかはわかりません.
デフォルト(または指定されている場合はカスタム)html「レイアウト」またはスケルトンを効果的にロードし、ユーザーのページ要求に基づいて、別のファイルを挿入する単純なレイアウトマネージャー(より適切な用語の欠如)を備えたフロントコントローラーがあります(ビュー ファイルと呼ばれる) をスケルトン コンテンツ領域に追加します。
スケルトンは次のようになります。
非常に単純ですが、これにより将来の更新が容易になります。クライアントが jquery スクローラーを追加したい場合、同じことを達成するために複数のドキュメントを編集する必要がないように、単一のレイアウトに追加できるからです。
しかし、私の友人は、これは良い解決策ではないと考えており、「ビュー」ファイルとレイアウトを分割するのではなく、フロントコントローラーに固執し、html ページで php インクルード (ヘッダーとフッターを含める) を使用する必要があると信じています。次の理由により、HTML ページを 1 つのファイルとして保持します。
- 単一のレイアウトにバインドしているため、レイアウト マネージャーを使用すると、アプリケーションの柔軟性が低下します (新しいレイアウトを作成し、ページ コントローラー ファイルで別のレイアウトを使用するように指定しない限り)。
- 他の開発者はロジックを理解するのに苦労するだろうし、私は必要以上の作業を作成している
- 単純な HTML 開発者は、HTML ドキュメント全体と同じようにスニペットでしか実際に作業できず、全体像を見ることができないため、適切なテストを行うことができません。
- ページに変更を加えるには、ビュー ファイルまたはスケルトン ファイルのいずれかで修正を加える必要があり、スケルトン ファイルをいつ編集するかを知る必要があるため、さらに混乱します。
私はすぐに、複数の開発段階を持つプロジェクトの開発を開始します。アプリケーションをできるだけ柔軟にし、作成する作業をできるだけ少なくしたいだけでなく、ビルドも行うため、これについて決定を下すことが重要です。サイトに修正、改善、または変更を簡単に加えることができるようにします。この議論は現在、2人の個人の意見に基づいているため、アドバイスをいただければ幸いです。考慮すべき点と、より大きなメインストリーム フレームワークと CMS の機能についての情報も、より良い決定を下すのに役立ちます。
php - set_exception_handler を使用してアプリケーションのエラーを処理する
私は現在、フロント コントローラー パターンを実装する MVC アプリケーションに取り組んでいます。
プロセスは次のように機能します。
- リクエストを受け付けます
- リクエストは RequestObject に変換されます
- RequestObject がディスパッチャーに渡される
- 次に、Dispatcher が必要なコントローラーをルーティングして呼び出します。
- コントローラは結果を ResponseObject で返します。
- その後、Dispatcher は ResponseObject をアプリケーションの「フロント」に返します。
- 出力はエコーアウトされます。
特殊なケースがあります (ajax およびフラッシュ フロントエンドの場合):
- ディスパッチャーは、リクエストが「エンドポイント」コントローラーに送信されたことを確認します。
- 次に、エンドポイント コントローラーは、上記のように、実際に要求されたコントローラーに要求をディスパッチします。
- 次に、requestObject がエンドポイント コントローラに返されます。
- 次に、エンドポイント コントローラーが JSON または AMF エンコーディングを実行し、これがエコーされます。
- その後、スクリプトは
exit()
;で終了します。
ExceptionHandler
クラスを作成してに登録しましたset_exception_handler
。ErrorHandler
を作成し、を使用すると同時にset_error_handler
、すべてのエラーが変換され、例外としてスローされます。
これはすべてうまく機能します。ExceptionHandler
ただし、これらの例外のいずれかをキャッチすると、問題に苦労しています。ではExceptionHandler
、ResponseObject が変更され、500 エラーをスローする必要があるという事実が反映されます。
何らかの形でから ResponseObject を返したいExceptionHandler
ので、返された ResponseObject はディスパッチャーによって「キャッチ」され、「エンドポイント」コントローラーまたは「フロント」コントローラーによって JSON または AMF 応答にレンダリングまたは変換されます。
これは可能ですか?もしそうなら、これを行う最善の方法は何ですか?
console - フロントエンド開発コンソール
symfonyで開発したWebサイトを担当しています。このウェブサイトは稼働中です。
私の仕事では完全に盲目になっているので、フロントエンドコンソールを再インストールする方法を知りたいです。