تالار گفتمان nCIS.ir

نسخه‌ی کامل: ارسال نشدن مقادیر
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
من دارم روی یه سیستم فروشگاهی کار می کنم
می خوام یه محصول رو به چند مجموعه اختصاص بدم
و برای این کار از کد زیر دارم استفاده می کنم

<div class="form-inline">
<h4> دسته بندی ها</h4>
<div class="form-group"> 
<?php 
echo CHtml::listBox('category_list',null,$model->getCategory(), array('multiple'=>true,'size'=>8,'style'=>"width: 180px; "));
echo $form->ListBox($category,'category_id[]',array(),array('class'=>'ProductCategory','multiple'=>true,'size'=>8,'style'=>"width: 180px; margin-right:15px;"));
echo CHtml::activeHiddenField($category, 'product_id',array('value'=>$model->id));
?>
<table class="move">
<tr >
<td></td><td></td><td></td>
<td rowspan ="2"><?php echo CHtml::button('<',array('id'=>'addlist')) ;?></td>
<td rowspan="2"><?php echo CHtml::button('>',array('id'=>'addproduct')) ;?></td>
</tr>
</table>
</div>
</div>
<script type="text/javascript" >
$('#addproduct').click(function () {
inHTML = "",
$("#category_list option:selected").each(function () {
   var optionVal = $(this).val();
   var text = $(this).text();
   var exists = false;
   $('.ProductCategory option').each(function(){
       if (this.value == optionVal) {
           exists = true;
       }
   });
   
   if(!exists) {
      inHTML += '<option value="' + optionVal + '">' + text + '</option>';
     
   }
   $("#category_list option:selected").remove();
});
$(".ProductCategory").append(inHTML);
});

$('#addlist').click(function () {
inHTML = "",
$(".ProductCategory option:selected").each(function () {
   var optionVal = $(this).val();
   var text = $(this).text();
   var exists = false;
   $('#category_list option').each(function(){
       if (this.value == optionVal) {
           exists = true;
       }
   });
   
   if(!exists) {
      inHTML += '<option value="' + optionVal + '">' + text + '</option>';
     
   }
   $(".ProductCategory option:selected").remove();
});
$("#category_list").append(inHTML);
});
</script>
مشکلی که هست
موقع ارسال اطلاعات به کنترلر category_id ارسال نمیشه
public function actionUpdate($id)
{
$model=$this->loadModel($id);
$category = new ProductToCategory;
$related = new ProductRelated;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);

if(isset($_POST['Product']))
{
$model->attributes=$_POST['Product'];
if(isset($_POST['ProductToCategory']))
{
Tools::debug($_POST['ProductToCategory'],true);
}

if($model->save())
$this->redirect(array('admin'));
}

$this->render('update',array(
'model'=>$model,
'category'=>$category,
'related'=>$related
));
}
مسئله اینه که category_id شما آرایه نیست (توی مدل) و شما دارین آرایه میفرستین. باید خودتون دستی توی کنترلر برای هرکدوم یه ActiveRecord جدا از جدول واسط بسازین و فیلدها رو دستی مقداردهی کنید.