下拉列表不'不保存添加js
dropdownlist doesn't save when added js
当我删除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请求
相关文章:
- 向AngularJS目录添加JS变量
- 使用 Razor 添加 JS 代码
- 在运行时添加js文件时出现语法错误
- 如何根据窗口宽度添加js文件
- 在Cordova项目中添加.js会破坏构建过程
- 动态添加 js 到 asp.net 文件
- 添加JS时Tumblr的奇怪行为
- 如何使用 api 修改 bigcommerce 前端(在应用程序中添加 js 代码)
- 是否可以阻止requireJS自动添加.js文件扩展名
- require.js文本插件在文件名中添加“.js”
- 如何在 jquery 中添加 js var
- 在Joomla head上添加JS
- 双击和更新表字段时添加 JS/添加文本框
- 在服务器的html文件中添加.js文件作为源文件
- 在另一个文件中添加JS src
- 最早什么时候可以动态添加JS/CSS并应用它们
- 如何在eclipse中添加JS资源
- 不能添加JS文件,或任何其他,到钛项目文件夹
- ASP.. NET在页面加载时添加js文件
- 如果主体类有类添加js,如果没有添加这个js