3

コントローラの各アクションにレイアウトを使用しようとしています。たとえば、インデックスコントローラーには3つのアクションがあります。それらは、indexAction、testAction、およびwelcomeActionです。3つのxmlレイアウトファイルを作成しました。index.xml、test.xml、およびwelcome.xml。最後に、プラグインを作成しました。

class Moon_Layout_Append extends Zend_Controller_Plugin_Abstract{

 public function preDispatch($request){


  $layoutFile = APPLICATION_PATH."/Modules/".$request->module."/layout/".$request->action.".xml";

  $layout = new Zend_Config_Xml($layoutFile,'index');


 }

}

問題は...レイアウトオブジェクトにアクセスして、xmlから読み取ったコンテンツを設定するにはどうすればよいですか?

4

3 に答える 3

4

レイアウト機能には、コントローラーアクションヘルパーを介して簡単にアクセスできます。次の行を使用して、レイアウトヘルパーを取得できるはずです。

$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');

Zend_Applicationまたはレイアウトを初期化する別の方法を使用していない場合は、最初に以下を呼び出す必要がある場合があります。

Zend_Layout::startMvc();
于 2009-10-25T04:03:23.420 に答える
1

私のためにだけ働いた

$layout = Zend_Layout::getMvcInstance(); 

 $layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');

うまくいきませんでした。

于 2012-04-29T12:24:07.903 に答える
1

このチュートリアルでは、必要なものを正確に説明しています。ナビゲーション用の xml を作成し、これを layout.phtml に表示できます。

http://www.goodcomputingtips.com/site/2010/09/part-5-adding-menus-using-zend_navigation-a-not-so-quick-quickstart-to-zend-framework/

簡単な例:

あなたのブートストラップで

protected function _initNavigation() {
$this->bootstrap("layout");
$layout = $this->getResource('layout');     
$view = $layout->getView();

$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','nav');
$navigation = new Zend_Navigation($config);

$view->navigation($navigation); }

あなたのlayout.phtmlで

<?php echo $this->navigation()->menu()->setMaxDepth(1); ?>

リンクには、他の構成方法があります。

于 2011-07-24T04:06:47.710 に答える