Witam,
Mam nadzieję że zwracam się do Was już z ostatnią, niemniej sporą prośbą. Przede wszystkim:
Istnieją trzy tabele:
Product Products_category Category
id id id
name pid name_pl
… cid
Mam dwa modele, product i category. Obydwa są połączone relacją MANY_MANY przez tabelę Products_category.
Problem pojawia się w panelu administratora w momencie kiedy dla danego produktu, muszę wyświetlić checkboxy z labelami wszystkich kategorii, a jednocześnie pozaznaczać te, do których kategorii należy produkt. Do tej pory wszystko działało na jednym polu category_id w tabeli Product. Obecnie po moich modyfikacjach wygląda to tak:
Kontroler:
$model=$this->loadModel($id);
$productCategory=Product::model()->findByPK($id);
$categories=Category::model()->findAll();
$kategorie = $productCategory->category;
$this->render('update',array(
'model'=>$model, // przekazanie informacji o produkcie
'categories'=>$categories, // tutaj nazwy kategorii
'productCategory'=>$kategorie // tutaj starałem się osobno przekazać listę kategorii do których przypisany jest produkt
));
Widok:
$arr=array();
foreach($productCategory as $kategorie) {
$arr[] = $kategorie->id;
}
foreach($categories as $row) {
?>
<div class="row">
<?php
echo $form->labelEx($row, $row['name_pl'], array('style'=>'width: 160px'));
echo $form->checkBox($model,'category_id', array('value'=>$row['id']));
echo $form->error($row,'name_pl');
?>
</div>
<?php
}
?>
Jak widać, jest jeden wielki misz-masz a żeby obsłużyć CActiveForm wydaje mi się że muszę skorzystać z jednego modelu.
W jaki sposób pozaznaczać te checkboxy i w jaki sposób umożliwić aktualizację tych wartości w tabeli Products_category?