2011-08-02 9 views
0

まず、私はZend Frameworkの初心者ですが、これを行う簡単な方法がありますが、わかりませんそれ。コントローラからロードするjsファイルを制御する方法(Zend Framework)

私が達成しようとしているのは、どのコントローラが使用されているかによって異なるjsファイル(レイアウトヘッド内)をロードすることです。 jsファイルをレイアウトオブジェクトに変数として追加することはできません。なぜなら、それらのコントローラでレイアウトが無効になっているからです。

これを行うには適切な方法はありますか?ありがとうございました。

編集(コード)CalendarControllerで

(Subdiggerのメソッドを使用して):

public function init() 
    { 
     $this->_helper->layout->disableLayout(); 

     $js = new Application_View_Helper_Javascript(); 
     //get an array with the basename of the js files   
     $jsFiles = $js->addFiles('calendar'); 

     foreach ($jsFiles as $k=>$file){ 
      $this->view->headScript()->appendFile('/js/' . $file.'.js'); 
     } 


    } 

そしてlayout.phtml中:

<?php 
echo $this->doctype()."\n"; 
?> 
<html> 
    <head> 
     <?php 
     echo $this->headMeta()."\n"; 
     echo $this->headLink()."\n"; 
     echo $this->headTitle()."\n"; 
     echo $this->headScript()."\n"; 
+1

レイアウトにJSファイルを追加したいのにレイアウトを無効にしましたか? –

+0

レイアウトはIndexControllerで有効です。他のコントローラはレイアウトを無効にしています。 – sica07

+1

そして、もしそれがSubdiggerの答えを見るなら、JSファイルを追加したいインデックスコントローラでしょうか。そうでなければ、上記の私の質問はまだ立っています。 –

答えて

2

あなたがこれで行くことができます方法:コントローラ内の

0123ビューで、その後

..... 
    <head> 
    <?php echo $this->headScript() ?> 
    </head> 
..... 

は私が正しくあなたの意図あなたの問題を理解しなくthis

+0

これは機能しません。私が言ったように、私はそのコントローラーのレイアウトを無効にしているので、 '$ this-> view'を使用すると無意味です。少なくともそれが働いていないと思う理由です。 – sica07

+0

@ sica07レイアウト表示レンダリングを無効にしても – Subdigger

+0

@ sica07はあなたのコードを表示するだけです - そして手助けする方法を見てみましょう – Subdigger

1

をお読みください。コメントでは、レイアウトはindexControllerで有効になっていますが、他のレイアウトではレイアウトが無効になっています。別のコントローラにディスパッチしてレイアウトを無効にする場合、layout.phtmlは使用しないでください。だから、どうやって使うの?あなたはどこかにインクルードを持っていますか?

ここの解決策は、レイアウトを無効にするのではなく、それらの「他の」コントローラに異なるレイアウトを読み込むことだと思います。

$this->_helper->layout->setLayout('foobaz'); 

コントローラーごとに異なるレイアウトをロードすることも、コントローラ内のアクションをロードすることもできます。私が気づいたもう一つのことは、init()メソッドでロードすることです。私はアクションやpre/postDispatchメソッドでこのロジックをすべて行います。

+0

はい、あなたは大丈夫です。他のコントローラーでは使用していません。私は別のアプローチで考える必要があります。私は別のレイアウトを可能にすることはできませんでした。アイデアありがとうが、私はこれが私が必要としているとは思わない – sica07

+0

少し助けてうれしい。あなたがレイアウトを無効にしてあなたの意図を知っていれば、もっと助けてもいいかもしれません。 –

+0

考え方は、他のコントローラが異なるビューを制御しているということです。私はそれがIndexControllerを使って一度だけロードするのは良い解決策だと思った。 – sica07

関連する問題