2012-02-15 10 views
0

私は誰かが作ったsymfonyプロジェクトに参加しました。そのように私はそれが本当にどのように動作するかについてそれほど知らない。私は過去6ヶ月間に様々な変更を行ってきましたので、漠然とした考えがあります...しかし、この問題は私を困らせました。symfonyで別のモジュールで読み込み可能な変数を設定していますか?

ファイル名/ディレクトリ構造を外すだけで、皆さんが助けてくれることを楽観的に望んでいます。だから私はそれを簡単に保つようにします。私が知っている内部

何か...

/apps/frontend/modules/search/actions.class.php 

がに見えるようにするニーズ...

/apps/frontend/modules/contact/templates/_minicontact.php 

これらの2つのファイルは、このテンプレートに出力されますと

/apps/frontend/templates/pageDetails.php 

次の2行のコード:

<?php echo $sf_content ?> 

and... 

<?php include_component('contact','minicontact'); ?> 

私が最初のファイルでの$ this - > MYVARを設定し、かつます$ this-> myVarに第二のファイルで$ myVarに両方をチェックしてみた、と私は運がなかったしました。

BODGING IS FINE。私はこれを達成するための最も簡単で簡単な方法を望んでいます。クライアントは今後数ヶ月で完全に新しいサイトを手に入れることになるので、これを「きれいに」行う必要はありません。ちょうど私に迅速かつ汚れを与える! :)私は答えは非常に簡単であると確信して

を...私は、しかし無駄にそれを置くことが必要な場所を把握しようget_defined_varsでかなり長い間を費やしてきました。

感謝!

編集:Symfony v1.2、私はバージョンが疑問に質問をするのか疑いがあります。

答えて

1

UPDATE

私はちょうどpageDetailsのためのあなたのパスに気づきました。それは別のレイアウトです。その場合、変数をレイアウトに渡す必要があります。典型的には、これは、レンダリングされているビューを有するスロットから行われる。しかし、この値が複数のモジュールから複数のビューから渡される必要があるかもしれないので、これがうまくいくかどうかを知るには十分な情報を提供する必要はありません。

は、そのための最も簡単な解決策は、おそらくロジックがminicontactコンポーネントに値を生成するものは何でも、重複をjsutすることになるだろう。

// in /apps/frontend/modules/contact/actions/components.class.php 
public function executeMinicontact() 
{ 
    // add the logic to produce the value for $myVar here and then: 
    $this->myVar = 'theValue'; 
} 

$sf_contentが与えられたモジュール用のビューであるべきpageDetails.phpにエコーされるだろう理由として混乱してイム。通常$sf_contentlayout.phpとしか見えません。

どれかあなたがそうのようなコンポーネントまたは部分的にパラメータを渡す:あなたはminicontactに渡す値はpageDetails.phpにすでに存在していることを前提としてい

<?php include_component('contact','minicontact', array('myVar' => 'yourValue'); ?> 

ofcourseの。

<?php include_component('contact','minicontact', array('myVar' => $myVar); ?> 
+1

私は間違いをご混同だと思う - I:例

// note this is the method name by convention but it may not be whats actually // your pageDetails.php - you can get info about what action is being executed // from the debug bar in the dev environment. public function executePageDetails(sfRequest $request) { $this->myVar = 'the value'; } 

、次いでpageDetails.phpに - その、あなたはあなたの行動のクラスの変数としてビューに追加する必要がありますない場合pagedetails.phpを意味します。大文字の "D"はないので、モジュールのアクションに直接関係しません。これはlayout.phpと同じフォルダにあります - いくつかのものがあります。 – Codemonkey

+0

ええ、事実の後でパスを捕まえました...私の更新を見て 'executeMinicontact'メソッドに追加してください。 – prodigitalson

+0

私はそれをうまく混乱させましたが、私はそれを働かせています。それは私が午前3時に気にするすべてです。私は非常にセッション変数を使用することに頼っていた...なぜ私はちょうど正直ではなかったかわからない! – Codemonkey