2014-07-05 36 views
1

當我刪除name時,所選下拉項目不會保存到數據庫中。當我添加name字段時,它不會被保存。 name轉到js輸入字段將顯示,並且輸入字段被保存。爲什麼不保存選定的下拉項目呢?dropdownlist在添加js時不會保存

<td><p><?php echo $form->dropDownList($model,'product_type', CHtml::listData(ProductType::model()->findAll(),'product_type','description'), 
     array(
     'class'=>'span12', 
     'name'=>'prodType', 
     'empty'=>"-- Select Type of Product --")); ?></td>         
<td><?php echo $form->error($model,'product_type'); ?></td> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('p select[name="prodType"]').change(function(e){ 
       if ($('p select[name="prodType"]').val() == "Pre"){ 
       $('#pre-input').show(); 
       }else{ 
       $('#pre-input').hide(); 
       } 
      }); 
</script> 
+0

嗨一起。該名稱與查詢中的某些內容相沖突,只是打印出更新數據庫的查詢,您將看到問題 – volkinc

+0

不確定您的意思?我也改名了,同樣的問題 – JamAndJammies

回答

0

你的控制器可能是這樣的..

class MyController extends CController { 
    ..... 
    public function actionSaveMyForm(){ 
     .... 
     if(isset($_POST['MyModel']){ 
      $model->attributes = $_POST['MyModel']; 
      $model->save(); 
     } 
     .... 
    } 
} 

這基本上是如果MyModel數組中的$_POST設置,然後分配給所有的子數組元素模型屬性,然後保存指他們。

當你不設定在dropDownList功能的name屬性調用自動生成的ID屬性是MyModel_<<attribute>>MyModel_product_type和名稱屬性是MyModel[product_type]因此,當你發送表單信息,這將是可用的$_POST['MyModel']下陣列。即產品類型可以從$_POST['MyModel']['product_type'] 因此

  if(isset($_POST['MyModel']){ 
       $model->attributes = $_POST['MyModel']; 
       $model->save(); 
      } 

檢索將會分配產品類型值$model->product_type並保存它。

但是當你手動指定名稱,值是gettable僅在$_POST['myCustomName]`所以你將有專門保存這樣

  if(isset($_POST['MyModel']) && isset($_POST['myCustomName')){ 
       $model->attributes = $_POST['MyModel']; 
       $model->product_type = $_POST['myCustomName']; 
       $model->save(); 
      } 

則該模型將得到正確保存。

注意:除了這個,你將不得不改變你的JavaScript或表單提交代碼發送的數據正確,包括您的自定義名稱字段,用POST請求

+1

它的工作!感謝您的詳細解釋! – JamAndJammies

相關問題