includeを使用したテンプレートの導入は、非常に柔軟なレイアウト ソリューションです。 しかし、公式チュートリアルはあまり明確ではないため、誤解を招くことがよくあります。それでは 2 つの文について説明します:
1. まず、include によって導入されたテンプレートと
action に対応するテンプレートの違いです。 これが一番わかりにくいです。アクションに対応するテンプレートはアクションにバインドされます。
テンプレートを含めることはアクションと関係がありますか?
インクルードテンプレートは単なる HTML であり、どこにでも配置できます。そのパラメータは、それを定義するアクションによって解析されませんが、それを使用するアクションはその解析に影響します。
jsテンプレートを使用したことがある場合は、理解しやすいでしょう。
紛らわしいのは、 include が
controller/method パターン を使用して参照できることです。これは、アクション コントローラーのビューをテンプレートとしても使用できることを意味します。ただし、ビュー内の HTML コードのみが使用されます。アクション内のコードは実行されません。 2.データソースを含めます。 include のデータ ソースはアクションではなく、include タグで渡されます。たとえば、公式チュートリアルの例:
<include file="Public/header" title="ThinkPHP框架" keywords="开源 WEB开发框架" />
であり、これら 2 つの変数は include テンプレートに渡されます。それは行動によってもたらされるものではありません。 結論:
include テンプレートは独立しており、どこからでも呼び出すことができます。パラメータを受信する機能を持ちます。
それを使用する人は誰でもそれを継承することを忘れないでください。
アクション ビューをインクルード テンプレートとして使用するのは、既製の HTML の使用を容易にするためです。アクションに対応するビューがインクルード テンプレートとして導入されると、ビューは独立した HTML フラグメントに変換され、アクションとは何の関係もありません。したがって、公式ステートメントは次のとおりです。
テンプレート ファイルをインクルードしても、コントローラーのメソッドは自動的に呼び出されないことに注意してください。つまり、他のインクルードされたテンプレート ファイル内の変数の割り当ては、現在の操作で完了する必要があります。
変数がインクルードに含まれている場合、ソースはビューのソースであるアクションではなく、現在このインクルードを使用しているアクションでもあります。そのアクションは実行されません!今では理解できます。
したがって、インクルード テンプレートを理解するための鍵は、それが多くの再利用可能な HTML フラグメントの編成であるということです。これらのフラグメントが独立した HTML であるか、アクション内のビューであるかは関係ありません。
私のアプローチとしては、css、img、jsが置かれているpublicフォルダーの下に置きます。 htmltpl フォルダーを追加します。
<include file="./Public/htmltpl/abc.html" />
以上がthinkphp の include の正しい理解と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。