ホームページ >バックエンド開発 >PHPチュートリアル >Joomla のタスクとビューの詳細な研究
[この記事の転載元: Mengxi Notes]
Joomla は、Web サイトの構築を迅速に完了できる優れた CMS システムであり、Web サイトのニーズのほとんどを満たすことができます。 。これにはコンポーネントが重要な役割を果たします。
1.基礎知識
コンポーネント(コンポーネント)はページの本体データを表示するために使用されます。 Joomla のコンポーネントは、MVC アーキテクチャを使用して設計されています。 ページ要求が生成されると、その URL にはタスク、ビュー、レイアウト、その他の情報が含まれる場合があります。ここでは、このタスクとビューについて説明します。一般に、URL にタスクが含まれている場合、ビューは含まれません。これは、Joomla がデータベース操作、有効性検証などの特定のタスクを完了すると考えているためです。データの表示を担当します。通常の設計では、タスク内でのタスク処理が完了した後、setRedirect メソッドが呼び出され、データを表示するビューに誘導されます。実際、Joomla では、URL でタスクが指定されていない場合、デフォルトのタスクは表示になります。
2. 質問
プロジェクトでは、Open グラフィック プロトコル データをページのメタデータに含める必要があります。オープン グラフィック プロトコルは、共有するデータの説明をソーシャル ネットワークに提供するために使用されます。 ページがタスクを通じて完了し、タスク内で setRedirect を使用して認可検証のデータに基づいて別のビューにジャンプし、検証に合格した後にデータ ページを表示すると、次の問題が発生する可能性があります。共有する このページでは、このページのメタデータにオープン グラフィック プロトコル データを追加しました。これを Facebook や Google+ などのソーシャル ネットワーキング サイトに共有したい場合、データと画像が表示されます。共有ページは、ページに表示したいデータではありません。
3. 解決策
上記の問題は、オープン グラフィック プロトコルのデータ取得がジャンプをサポートしていないためです。ジャンプが発生した場合、通常は Web サイトのホームページにアクセスしてデータを取得することになります。欲しい。問題はsetRedirectです。 setRedirect の原理は、ブラウザに送信される HTML ヘッダーにジャンプ命令が含まれるということです。上記の問題を解決する方法は、setRedirect を使用するのではなく、display メソッドを使用することです。必要なのは、入力に渡すビュー、レイアウト、その他のデータを設定してから、表示方法ができます。
以下はサンプルコードです:
/** * 内部跳转,用于代替setRedirect. 为什么要这样子做呢? * 因为 setRedirect他会发送一个http头到浏览器,让浏览 * 进行跳转,这样一来就多了一个网络请问, 这是其一。最 * 为主要的是setRedirect在某些不支持浏览器redirect的情况 * 下达不到效果,例如:open graphic protocal * * @param type $view 要显示的view * @param type $layout 要显示的layout, 默认为NULL */ protected function internalRedirect($view, $layout=null){ $this->input->set("view", $view); $this->input->set("layout", $layout); return $this->display(); } public function checkAvailable(){ //其他的业务代码 $this->input->set('tmpl', 'doexam'); return $this->internalRedirect("doexam", $layout); }
上記のコードはコントローラーに書かれています。 InternalRedirect 関数は、$input でビューとレイアウトを設定し (この入力は URL の入力パラメーターを参照します)、JControllerLegecy の表示メソッドを直接呼び出してページを表示します。
checkAvailable メソッドでは、internalRedirect を呼び出す前に、ビューに必要な他のパラメーターも設定されます。
Mengxi の友人は、彼の Web サイトの 1 つを構築しているときにそのような問題に遭遇したと言いました。私たちは Joomla 実装コードについて話し合い、分析しましたが、Joomla コンポーネントの開発に精通している限り、解決策は実際には非常に簡単であることがわかりました。ご質問がございましたら、私に相談してください
この記事があなたが遭遇した問題を解決できることを願っています。
以上、内容も含めてJoomlaのTaskとViewについて詳しく紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。