2010-12-08 11 views
1

ナビゲーションツリーを構成するアプリケーションのページがあります。リクエストの値を使用してナビゲーションにページを動的に挿入したいと思います。私はすでにページを見つけて、addPage()メソッドを呼び出すロジックを持っています。私が探しているのは、簡単にZend_Controller_Requestの値をZend_Navigation_Page::factory()に渡す方法です。そのページを追加することができます。たぶんプラグインとして書かれていますか?Zend_Controller_RequestからZend_Navigation_Page_Mvcインスタンスを作成する


ソリューション

AngelPは、最も近いを得たので、私は彼に信用を与えているが、ここで私の解決策だ:

$request = $this->getRequest(); 
if ($page = $this->view->siteNav->findBy('id', $page_id)) { 
    $page->addPage(Zend_Navigation_Page::factory($request->getParams()) 
      ->setParams($request->getParams()) 
      ->setLabel($this->view->title) 
      ->setVisible(false)); 
} 

このコードは、コントローラのアクションから実行されます。 $this->view->siteNavは、ビューにあるZend_Navigationのインスタンスです。 Zend_Controller_RequestインスタンスのgetParams()は、に、次にZend_Navigation_Page_MvcインスタンスのsetParams()メソッドに簡単に渡されます。

答えて

1

私は

 

$controller = $this->_request->getControllerName(); 
$action = $this->_request->getActionName(); 

$page = new Zend_Navigation_Page(array(
        'label' => "Sonny's Page", 
        'controller' => $controller, 
        'action' => $action 
)); 
 

はたぶん、あなたはプラグインとしてこれを使用することができます。..ので、私は本当に私の提案を確認することはできませんが、あなたはあなたのコントローラにいる場合は、なぜあなたがいない現時点では、リソースが限られていますあなたのビューをオーバーロードするように?そしてあなたのナビゲーションコンテナに追加しますか?我々はすでに書かれているコードを知らないので

乾杯、
エンジェル

+0

私は、手作業で構築されたkey => value配列を使って 'Zend_Navigation_Page'を構築する方法を知っていますが、' Zend_Controller_Request'のいくつかのメソッドを使っていくつかのショートカットがあることを期待していました – Sonny

0

Zend_Registryにインスタンスを保存してから、プラグイン、モジュールブートストラップ、またはアクションコントローラのpostDispatchに元のnavにページを追加してみませんか?

+0

私はあなたの答えに従っていません。ビュー変数に 'Zend_Navigation'インスタンスを設定しました。私はその部分に問題はありません。私は特定のコントローラーアクションでページを追加したいと思っています。私はすでにそのパーツをどのように達成するかを知っています。私が知らないのは、 'Zend_Controller_Request'を使って' Zend_Navigation_Page_Mvc'インスタンスを単に作る方法です。 – Sonny

1

、私はあなたがする必要がある...

を推測している:

  • は、実際のZend_Navigationを取得しますnavigation()ビューヘルパーで使用されるコンテナ
  • 要求から取得されたデータの配列から新しいZend_Navigation_Pageインスタンスを作成します。
  • これは簡単なはずナビゲーションヘルパー

に新しいコンテナを割り当てる

  • コンテナにページを追加します。あなたが知っている必要があり、残り:preDispatch方法でコントローラプラグインを作成し、そこに上記を入れてどのように

    • /ビューレンダラからまたはアプリケーションのリソースから(このプラグインでは、現在のビューのインスタンスにアクセスする方法ブートストラップ)

    このプラグインでは、ビューの通常どおりナビゲーションビューヘルパーを操作します。

    これはいくつかのことを明確にしました。

  • +0

    "私はステップ1、3、そして4を全て試しました。 'Zend_Controller_Request'インスタンスのメソッドから' $ this-> getRequest() 'を呼び出すことでコントローラアクションで利用可能なメソッドから簡単に' Zend_Navigation_Page'インスタンスを作成することを望んでいました。 – Sonny

    +0

    @ソニーAngelP記載されたステップ2 [彼の答え](http://stackoverflow.com/questions/4389358/create-a-zend-navigation-page-mvc-instance-from-a-zend-controller-request/4391789 #4391789)。 – takeshin

    関連する問題