2009-06-27 7 views
2

こんにちは自分のPHP MVCフレームワークを構築しています。それを使用するつもりはありません。しかし、私はPHP5のOOとMVCのデザインパターンを学ぼうとしています。PHPでMVCの方法でメニューを構築する

私は多くのチュートリアルを読んで基本的な動作を得ましたが、今はもっと複雑になってきています。

私のフレームワークは、次のURL構造/ controller/actionを使用します。任意に、無限の数の変数、例えば、/product/view/1。

これまでのところ、2つのコントローラ、つまりページと製品があります。私はそれらを両方とも単一のメニューに含めることはできません。私は次のメニュー構造を確立しようとしています。腐食したURLは角カッコで囲まれています。

  • 私たちの会社(/ページ/ビュー/ 2)
    • Werkwijze(/ページ/ビュー/ 3)
    • スタッフ(/ページ/ビュー/ 4)
  • 当社の製品(/製品/インデックス)
    • パン(/製品/カテゴリ/ 1)
    • Banket(/製品/カテゴリ/ 2)
    • ケーキ(/製品/カテゴリ/ 3)
  • 連絡先(/ページ/ビュー/ 5)

だから、基本的に私は、メインメニューとサブメニューを得ました。メニュークラスに定義した要件はいくつかあります:

  • 現在の項目はメニューに別のCSSクラスを持つ必要があります。
  • 現在のアイテムの親がそれよりも大きい場合は、別のCSSクラスを持つ必要があります。
  • メニューは、URLのすべての種類のコンテンツを使用して拡張可能でなければなりません。
  • ボーナスポイントの場合:私はパンカテゴリから製品を選択するとき。/product/view/1としましょう。 「私たちの製品」と「パン」のメニュー項目も強調したいと思います。 http://www.eriknijland.nl/stackoverflow/

は、私はここで実行している私の「フレームワーク」のコピーを持っています。コンテンツはオランダ語ですが、メニューは静的なHTMLだけです。

ソースコードはフォルダにもダウンロード可能である:

  • /stackoverflow/source/framework.zip /stackoverflow/source/framework.sql

その他私のコードに関するコメントも歓迎しています:P。

+0

甘い+15文字 – bobobobo

答えて

1

ビルドするすべてのコードは、アプリケーションのビューレイヤーに配置する必要があります。もちろん、フレームワークは、モジュールとアクションがアクティブであることを知る方法を提供する必要がありますが、メニューの動作はフレームワークではなくアプリケーションで実装する必要があります。

もう1つの選択肢は、自動的にメニューを構築するヘルパーを提供するようにフレームワークを設計することです。この場合、すべてがフレームワークのビューレイヤー内に実装される必要があります。

+0

ありがとう...しかし、(アプリケーションだけでなく、フレームワークの一部として)メニュー 'ライブラリクラス'についてはどうでしょうか。コントローラーは、各メニューにアクティブなメニュー項目を追加することができます。 しかし、もう一度。それはメニューを必要とするビューです。 XMLビューも計画されていますが、メニューは必要ありません。または、コントローラは、ビューに応じてアクティブな項目のみを追加する必要があります。 ここで大声で考えてみてください... – Erik

+0

MVCフレームワークのメニューライブラリやヘルパーが実際に表示されません。フレームワークを使用している人に、メニューに完全な柔軟性とカスタマイズを与えることができるようにしたいと考えています。ここでは、CMSではなくMVCフレームワークを構築していることに注意してください(この場合、メニューライブラリは問題ありません)。 – jimyi

+0

@jimyiフレームワークやCMSを定義する方法がわかりません。しかし、私の「フレームワーク」は実際にはCMSだと思います。 私のクラスのほぼすべてには、デモサイト専用のカスタム機能があります。明日のために 私のToDoリスト: - テンプレートクラス を作成 - テンプレートクラスは、メニュークラス を作成してみましょう - メニューに通知するためにコントローラを使用するアクティブなアイテム の - コントローラは、テンプレートをレンダリングしてみましょう(テンプレートクラスの谷?) - テンプレートがメニューをレンダリングする 私が間違っている場合は、私を修正してください。 – Erik

関連する問題