5

Zend フレームワークを使用して動的サイドバーまたはその他の非コンテンツ レイアウトの場所を作成するためのベスト プラクティスは何ですか。この時点で、WidgetsController というコントローラー ウィッチを作成しました。このコントローラーでは、サイドバーの「サイドバー」応答セグメントを使用していくつかのアクションを定義し、IndexController では $this->view->action(); でそれらを呼び出します。機能ですが、動的なサイドバーを作成するのがベスト プラクティスだとは思いません。回答ありがとうございます。

4

4 に答える 4

8

あなたの質問は多くの詳細を提供していません。一般的に、ビューの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>

追加の機能が必要な場合は、それを処理する専用のビュー ヘルパーを作成できます。

于 2009-01-07T16:47:09.860 に答える
0

これは ZF 1.11 で機能します: Zend Framework での動的サイドバーの実装

于 2012-01-07T10:58:26.180 に答える
-2

はい、皆さん、私の賭けは、Code Igniter の人々からの答えが正しいアプローチであるということです。実際、CI がどのようにそれを行うかを簡単に確認し、比較することは役に立ちます。「名前付きビュー」の代わりにZFに「パーシャル」があることを除いて、ZFでも基本的に同じです。

ZF には、レイアウト + ビュー + パーシャルなど、より課された規律と、これを実装するためのより多くの内部機構があり、実際には半分の速度で実行されますが、コード イグナイターはこの装置全体を「名前付きビュー」にフラット化したようです。

(ZFが焼きすぎたのか、それとも一部のCIステーキは途中で生のままにしておく必要があるのか​​ については、まだ決めていません. )

$navigation->setPartial(blah blah) を使用すると、リードアップ配列 (技術的には、この種のデータは MVC の「モデル」部分を構成します) がパーシャルで利用できるようになります。

これで、モデルの表示面をコントローラーにプルするのではなく、モデル表示のものをビュー処理機械にプッシュするという考えのようです。

例は少し薄いですが、Zend マニュアルのビュー ヘルパー セクションでパーシャルを検索してこれを見つけました。

キースの幸運を祈ります

于 2009-10-27T01:07:32.553 に答える
-4

サイドバーにどのような種類のコンテンツが表示されるか、それらをどのように表示するか (つまり<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>
于 2009-01-07T16:42:06.220 に答える