下拉列表不'不保存添加js

dropdownlist doesn't save when added js

本文关键字:添加 js 保存 下拉列表      更新时间:2023-09-26

当我删除name时,所选的下拉项确实保存到数据库中。当我加入name字段时,它不会被保存。name转到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>

您的控制器可能是这样的…

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

这基本上意味着如果MyModel的数组在您的$_POST中设置,那么将所有子数组元素分配给模型属性,然后保存它们。

当您不设置dropDownList函数调用中的名称属性时,自动生成的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();
            }

将分配product_type值$model->product_type并保存它。

然而,当你手动分配名称时,值只能在$_POST['myCustomName] '处获得,所以你必须像这样保存它

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

,模型将被正确保存。

注意:除此之外,您还必须更改JavaScript或表单提交代码以正确发送数据,包括自定义名称字段,以及POST请求