Grazie per la dritta !
Dimmi se ho fatto bene o se c’era una strada più semplice ancora:
Nel model di Listing ho creato questo
// Dà una lista degli Item associati ad uno specifico Model
public function searchAssociated() {
$items = Item::model()->with('listingItemObj')->findAll("listingItemObj.listingId = " . $this->id);
$arrayDataProvider=new CArrayDataProvider($items, array(
'id'=>'id',
'pagination'=>array(
'pageSize'=>10,
),
));
return $arrayDataProvider;
}
Questo invece è dentro la view _form: come puoi vedere compare solo se sono in modifica
<div class="mws-form-row" <?php if ($model->isNewRecord) echo "style='display: none;'"; ?> >
<div class="mws-panel-header">
<span class="mws-i-24 i-list"><?php echo Yii::t('models', 'Item' ); ?></span>
</div>
<div class="mws-panel-body">
<?php $params =array('arrayDataProvider'=>$model->searchAssociated(), );
echo $this->renderPartial('_associatedItem', $params);
?>
</div>
</div>
Ed infine ecco il partial _associatedItem:
<?php
if ( $this->hasWriteAccess() )
{
$template = '{delete}';
$assButtonsArray = array(
'delete' => array(
'label'=>Yii::t('general','Cancella'),
'imageUrl'=> Yii::app()->request->baseUrl.'/css/icons/16/cross.png',
),
);
}
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'item-listing-grid',
'dataProvider'=>$arrayDataProvider,
'template'=>'{items}{pager}{summary}',
'pager' => array(
'header' => false,
),
'columns'=>array(
array (
'name' => Yii::t('Item.Item',"Code"),
'value' => '$data->code',
),
array (
'name' => Yii::t('Item.Item',"Description"),
'value' => '$data->description',
),
array(
'class'=>'CButtonColumn',
'template'=> $template,
'buttons'=> $assButtonsArray,
),
),
));
?>
Dato che la form ha come model un Listing, che HAS_MANY ListingItem, il quale BELONGS_TO Item, mi aspettavo di poter usare come array
$model->listingItemObj (che è il nome della relation dentro a listing, che appunto lega listing a listingItem)