2012-02-13 18 views
0

ための一つのページに複数のCGridView私は次のような関係スキームがあります。のYii - 関係

1 portfolio -> Many Users in each Portfolio -> Each User owns many Products

エンティティ:ポートフォリオ、ユーザー、製品

私が表示したいと思い、何が1ページにあります。 1.ポートフォリオの名前 2.ユーザーのタイトルCGridViewがバインれなかった場合には、思わユーザー

が所有するすべての製品の 3. CGridView gを使用する場合は、モデルを適切に作成し、foreachループを使用して各ユーザーのリレーションをループし、そのユーザーに関連する製品をループします。また、製品とユーザーのためのrender_partialビューを作成します。

しかし、私はCGridViewでこれを達成する方法として完全な犠牲を払っています。

アドバイスはありがとうございます。

答えて

0

ユーザの製品をCGridViewでレンダリングしたいですか?

CGridViewでデータをレンダリングするには、CDataProviderを渡してビューを生成する必要があります。だから問題は、どのようにHAS_MANY関係のためのCDataProviderを作るのですか?

驚いたことに、CActiveDataProviderは、このようにリレーションをサポートしていません。あなたがする必要があるのは、関係を取得し、そのデータをCArrayDataProviderに渡すことです。

$dataProvider = new CArrayDataProvider($user->products, array()); 
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
    'columns'=>array(
    'id', // your columns here 
), 
)); 

それは理想的ではないが、それは動作します:$user->products関係を仮定すると、あなたはこのようにそれを行うことができます。 http://learnyii.blogspot.com/2010/12/yii-how-to-display-related-hasmany-grid.html

+0

"$ rawData = $ user-> products、$ config = array()"これは面白いです。そのようなメソッドを呼び出すべきではありません。 –

+0

ええ、奇妙です、私はどこから来ているのか分かりません。私が信じたリンクを見ると、そこから無償のコピペスタとして来たかもしれない。私はそれを修正した、ありがとう。 – thaddeusmt