5

でマスターページを作成する方法はphp? ASP.NET MVCのLayout.cshtml(および)のように?RenderBody()

ありがとう!

PS たぶん、その目的のためのサードパーティのツールがありますか?

編集

Ok。問題は MVC アーキテクチャではありません。ここを見てください:http://jsfiddle.net/challenger/8qn22/109/

  1. I want the master page/layout to stay when user gets redirected to the other page
  2. Want an average page to be nested inside the content division. So if it is a form I want this form to be displayed like: http://jsfiddle.net/challenger/XgFGb/17/
4

7 に答える 7

6

PHP標準フレームワーク/APIがサポートするものは次のとおりです。

このrequire("/definitions.php")関数は、クラス、関数、および定数の定義をファイルからロードし、PHPコードの外部のコンテンツをphp:// stdoutに出力します(Webサーバーでは、これがブラウザーに送信されます)。require_once依存関係(定義付きのphpファイル)のインポートに使用することをお勧めします。

PHPのopenタグとcloseタグを使用して、テンプレート機能に近いものを取得します。たとえば、通常のページは次のようになります。 通常のページ

含まれている(そして繰り返し含めることができる)ものは次のようになります: ここに画像の説明を入力してください

「テンプレートエンジンを使用しない」と言っているのではなく、PHPが意図的に構築されていることを実現するための明確で簡単な方法を示しているだけです。これで十分な場合は、「テンプレートエンジンを使用しないでください」と言います(ただし、整頓されていれば、厳密で面倒なMVCフレームワークを使用せずに、ロジックをビューから簡単に分離できます)。

于 2012-05-22T15:36:36.703 に答える
1

Ok。私に最も適したソリューションは、ここhttp://www.phpro.org/tutorials/Introduction-to-PHP-templating.html#9で説明されています。実装は簡単で迅速であり、テンプレートエンジンの使用を強制することはありません。涼しい!

于 2012-05-23T05:20:28.527 に答える
1

PHP には、テンプレートと呼ばれる非常によく似た手法があります。マスター ページの代わりに、テンプレートがあります。言語自体には組み込みのテンプレート機能はありませんが、サードパーティのテンプレート エンジン (Smarty、PHPTAL、XTemplate など) があります。

「実際の」マスター ページが必要な場合は、それらを実装することは完全に可能です。マスター ページをクラスにラップし、そのクラスをコンテンツ ページに include() するだけです。

また、Zend Framework は、ビュー テンプレートがレイアウト テンプレート内にレンダリングされる 2 ステップ ビューをサポートします。これでマスターページの必要性が満たされると思います。

次のリンクを参照してください。

  1. PHP でのマスター ページの概算
  2. CodeIgniter フレームワークに MasterPages のようなものはありますか?
  3. ASP.NET のマスター ページに相当する PHP
  4. ASP.Net MVC または Zend Framework。あなたの意見は何ですか
  5. http://hoolihan.net/blog-tim/2008/09/24/simple-masterpages-with-php/
于 2012-05-22T09:23:56.363 に答える
1

Twig テンプレート エンジンはテンプレートの継承を提供します

Twig の最も強力な部分は、テンプレートの継承です。テンプレートの継承により、サイトのすべての共通要素を含み、子テンプレートがオーバーライドできるブロックを定義する基本の「スケルトン」テンプレートを構築できます。

スタンドアロンとして使用できますが、人気のあるsymfony フレームワークの背後にいる人々によって作成されました。

于 2012-05-22T15:42:53.740 に答える
1

しばらく前 (数年前)、Smarty を使用してこのようなことを達成し、それを拡張して DisplayMaster("NameOfTemplate", "NameOfMasterTemplate") の効果を持つメソッドを含めました。

テンプレートをレンダリングし、結果を別の (マスター) テンプレートに渡すことで機能します。

上記には 2 つのテンプレートがあります。NameOfTemplate には、メイン コンテンツ セクションのみがあります。

<div>...{$someProcessing}</div>

NameOfMasterTemplate には外側の html があります

<html>...<body><div class="layout">{$innerHtml}</div></body></html>
于 2012-05-28T03:30:41.773 に答える
1

ちなみに、 Laravel フレームワークにはBlade テンプレート エンジンが含まれていることは知っています。Razor と非常によく似た構文を使用します。

例:

@layout('master')

@section('navigation')
    @parent
    <li>Nav Item 3</li>
@endsection

@section('content')
    Welcome to the profile page!
@endsection

(カミソリ、ブレード、ローラースケート)

于 2012-05-18T13:53:16.633 に答える