7

現在、異なるモジュールのパーシャルを複製し続ける必要があることに気づいています。

すべてのパーシャルにアクセスするためのケースディレクトリが欲しいのですが。

誰かがこれを行う良い方法を持っていますか?

ありがとう

4

2 に答える 2

8
$this->partial('directoryOfPartials/partial.phtml', $model);

$this->partialを3つの引数で使用することもできると思います。2番目の引数はモジュール名で、3番目の引数がモデルになります。

取得元:http : //framework.zend.com/manual/en/zend.view.helpers.html

例10他のモジュールでのパーシャルのレンダリングパーシャルが別のモジュールに存在する場合があります。モジュールの名前がわかっている場合は、それを2番目の引数としてpartial()またはpartialLoop()に渡し、$model引数を3番目の位置に移動できます。たとえば、「list」モジュールに使用したいポケットベルパーシャルがある場合は、次のように取得できます。

<?php echo $this->partial('pager.phtml', 'list', $pagerData) ?>

このようにして、他のモジュール用に特別に作成されたパーシャルを再利用できます。とはいえ、再利用可能なパーシャルを共有ビュースクリプトパスに配置することをお勧めします。

編集-コントローラーのアクションスコープ内からビューパーシャルにアクセスする

$this->view->getHelper('partial')->partial('comments.phtml');
于 2010-03-30T17:07:45.970 に答える
2

素晴らしいありがとう:)

ただし、コントローラーを介してこれを行うにはどうすればよいですか?私はfancyboxを持っていて、ajaxレイアウトを設定しました:

$this->view->layout()->setLayout('ajax');

$errors = array('You have lost your rights to download this clip, you have downloaded it the maximum amount of times.');

$this->render($this->view->partial('partials/errors.phtml', 'default', array('errors' => $errors)), NULL, true);

必要に応じてポップアップウィンドウが表示されますが、次のエラーが発生します。

Problem: Method "partial" does not exist and was not trapped in __call()

$ this->view->partialはビューテンプレート内で$this->partialを使用するのと同じだと思いましたが、そうではないと思います。アイデア?

解決済み:

ブートストラップinitView、追加:

$view->addScriptPath('../application/layouts/partials');

パーシャルをそのディレクトリに移動しました。次に、私のコントローラーで次のことを行います。

$this->view->layout()->setLayout('ajax');
$this->view->form  = $form;
$this->renderScript('login.phtml');

#zftalksSmartSsaに感謝します

于 2010-03-31T10:43:14.117 に答える