Zend フレームワークを使用して動的サイドバーまたはその他の非コンテンツ レイアウトの場所を作成するためのベスト プラクティスは何ですか。この時点で、WidgetsController というコントローラー ウィッチを作成しました。このコントローラーでは、サイドバーの「サイドバー」応答セグメントを使用していくつかのアクションを定義し、IndexController では $this->view->action(); でそれらを呼び出します。機能ですが、動的なサイドバーを作成するのがベスト プラクティスだとは思いません。回答ありがとうございます。
4 に答える
あなたの質問は多くの詳細を提供していません。一般的に、ビューのrender/partialメソッドを介して、サイドバーをビューテンプレートとしてロードすると思います。したがって、ビューの中から:
//$data is dynamic data you want to pass to the sidebar
echo $this -> partial('/path/to/sidebar.phtml',array('menuitems' => $data));
そして、サイドバーはその動的データを処理できます:
//sidebar.phtml
<div id="sidebar">
<?php foreach($this -> menuitems as $item) : ?>
<a href="<?php echo $item['url']; ?>"><?php echo $item['title']; ?></a>
<?php endforeach; ?>
</div>
追加の機能が必要な場合は、それを処理する専用のビュー ヘルパーを作成できます。
これは ZF 1.11 で機能します: Zend Framework での動的サイドバーの実装
はい、皆さん、私の賭けは、Code Igniter の人々からの答えが正しいアプローチであるということです。実際、CI がどのようにそれを行うかを簡単に確認し、比較することは役に立ちます。「名前付きビュー」の代わりにZFに「パーシャル」があることを除いて、ZFでも基本的に同じです。
ZF には、レイアウト + ビュー + パーシャルなど、より課された規律と、これを実装するためのより多くの内部機構があり、実際には半分の速度で実行されますが、コード イグナイターはこの装置全体を「名前付きビュー」にフラット化したようです。
(ZFが焼きすぎたのか、それとも一部のCIステーキは途中で生のままにしておく必要があるのか については、まだ決めていません. )
$navigation->setPartial(blah blah) を使用すると、リードアップ配列 (技術的には、この種のデータは MVC の「モデル」部分を構成します) がパーシャルで利用できるようになります。
これで、モデルの表示面をコントローラーにプルするのではなく、モデル表示のものをビュー処理機械にプッシュするという考えのようです。
例は少し薄いですが、Zend マニュアルのビュー ヘルパー セクションでパーシャルを検索してこれを見つけました。
キースの幸運を祈ります
サイドバーにどのような種類のコンテンツが表示されるか、それらをどのように表示するか (つまり<ul>
、<div>
やその他のものを使用して)、データベースから取得されたコンテンツであるかなど、もう少し詳細が必要です。
この形式も使用するCodeIgniterModel, View, Controller
で、「sidebar.php」というビューを作成し、ビューHeader
にこのサイドバー ビューへの呼び出しを含めます。
<html>
<head>.......</head>
<div id="header">....</div>
<?php $this->load->view('sidebar');?>
サイドバー ビューには、メニュー項目を表示するためのロジックが含まれています。通常は静的メニューですが、動的でデータベースからフェッチする必要がある場合は、次のようにします。
<ul>
<?php
$items=$this->some_model->getMenuItems();
foreach ($items as $item):
?>
<li><a href="<?=$item['url'];?>"><?=$item['text'];?></li>
<?php endforeach;?>
</ul>