私はsymfony 1.0のプロジェクトに取り組んでいます。次のようにアクションファイルに結果セットを作成しました
$perform = new Criteria();
$perform->clearSelectColumns();
$perform->addSelectColumn(ProductionPeer::PREVIEW_DATE);
$perform->addSelectColumn(ProductionPeer::OPENED);
$perform->addSelectColumn(ProductionPeer::CLOSED);
$perform->addSelectColumn(ProductionPeer::PERFORMANCES);
$perform->addSelectColumn(VenuePeer::NAME);
$perform->addJoin(ProductionPeer::VENUE_ID, VenuePeer::ID, Criteria::LEFT_JOIN);
$perform->add(ProductionPeer::TITLE_ID,3);
$this->performRsCnt = ProductionPeer::doCount($perform);
if($this->performRsCnt > 0)
{
$this->performRs = ProductionPeer::doSelectRS($perform);
$this->performRs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
}
アクション自体で print_r($this->performRs) すると、目的の出力が得られます
問題は、成功ファイルに含まれる 1 つの pratial ファイルを作成したことと、部分ファイルに部分ファイルに含まれるコンポーネントがあることです。コンポーネントのインクルードコードの前にアクションオブジェクト、つまり$performRsを印刷すると、目的の出力が得られますが、インクルードコードの後に印刷すると、コンポーネントにある最後の結果セットで上書きされます
以下はコンポーネントのサンプルコードです
コンポーネント ファイル コード
class defaultComponents extends sfComponents
{
public function executeMediaDetail()
{
$mediaHardeep = new Criteria();
$mediaHardeep->addSelectColumn(PhotosPeer::PHOTO);
$mediaHardeep->addSelectColumn(PhotosConcernsPeer::PHOTOS_ID);
$mediaHardeep->addJoin(PhotosConcernsPeer::PHOTOS_ID, PhotosPeer::ID, Criteria::LEFT_JOIN);
$mediaHardeep->add(PhotosConcernsPeer::REF_ID, $this->ref_id);
$mediaHardeep->add(PhotosConcernsPeer::TYPE, $this->type);
$imgRsCntHardeep = PhotosConcernsPeer::doCount($mediaHardeep);
}
}
コンポーネント インクルード コードを部分的に
<?php print_r($performRs);?> //desired output
<!-- start media section -->
<?php include_component('default', 'mediaDetail',array('ref_id' => $titleData['ID'], 'type' => 'title','abc123'=>$abcRs));?>
<!-- end media section -->
<?php print_r($performRs);?> //gives the output of $imgRsCntHardeep which is in component
コードを何度もチェックしましたが、変数の不一致、変数を部分またはコンポーネントに渡す、変数名を複数回使用するなどのエラーがコードに含まれていないことを確認しました。土曜日からこの問題を解決しているので、ここから解決策が見つかることを願っています