Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii';s JUIDatePicker小部件不适用于更新_Yii_Uidatepicker_Jquery Ui Datepicker - Fatal编程技术网

Yii';s JUIDatePicker小部件不适用于更新

Yii';s JUIDatePicker小部件不适用于更新,yii,uidatepicker,jquery-ui-datepicker,Yii,Uidatepicker,Jquery Ui Datepicker,我正在使用Yii的zii.widgets.jui.CJuiDatePicker,但出现以下问题: 在插入新记录或更新日期为空的记录时,该功能运行良好。 但当我尝试用日期值更新记录时,我无法更改它。 你知道会发生什么事吗 $this->widget('zii.widgets.jui.CJuiDatePicker', array( 'model' => $model, 'attribute' => 'datetime', 'name' => $model->datetime, 'op

我正在使用Yii的zii.widgets.jui.CJuiDatePicker,但出现以下问题:
在插入新记录或更新日期为空的记录时,该功能运行良好。
但当我尝试用日期值更新记录时,我无法更改它。
你知道会发生什么事吗

$this->widget('zii.widgets.jui.CJuiDatePicker', array(
  'model' => $model,
  'attribute' => 'datetime',
  'name' => $model->datetime,
  'options'=>array(
    'showAnim'=>'fold',
    'dateFormat'=>'yy-mm-dd', 
    'altFormat'=>'yy-mm-dd',
    'changeMonth'=>'true', 
    'changeYear'=>'true', 
    'yearRange'=>'1920:2010', 
    'showOn'=>'both',
    'buttonText'=>'...' ),
  'htmlOptions'=>array( 'style'=>'height:20px;' ),
) );
尽管该字段名为datetime,但它实际上是一个日期MySQL字段。

您应该指定“value”属性:

$this->widget('zii.widgets.jui.CJuiDatePicker', array(
  'model' => $model,
  'attribute' => 'datetime',
  'value' => $model->datetime,
  ...

我假设在您的更新操作中,您有如下内容:

public function actionUpdate($id){

   $model=$this->loadModel($id);

   // Assuming the name of your model is DateModel
   if(isset($_POST['DateModel'])){
        $model->attributes = $_POST['DateModel'];
        // more code to validate and save
   }
   // more code
}
$model->attributes = $_POST['DateModel'];
$model->datetime = $_POST[''.$model->datetime];
现在,如果您为表单视图检查生成的html的源,您将看到
datetime
属性的输入元素的idname被设置为该属性的值,这实际上是由于行
'name'=>$model->datetime
而发生的。例如,它最终可能是这样的:

<input type="text" value="2012-02-08" name="2012-02-08" id="2012-02-08" style="height:20px;" class="hasDatepicker">

谢谢,但是正确地从数据库中检索到了该值(param属性可以做到这一点),并且在创建和更新datetime值为NULL时,它确实会写入数据库ok。问题在于datetime不为NULL时的更新。只需删除CJuiDatePicker小部件的
'name'
属性。如果您阅读了我的帖子,这不是问题所在,因为插入新记录时,值已到达数据库,但无论如何,谢谢。嘿,这就是问题所在,我在插入新记录时尝试过它,
'name'=>$model->datetime
值为空,因为模型还没有值。但是当更新现有记录时,$model->datetime将有一个值,对吗?因此,该值将成为输入的名称和id。我已经测试过了,请尝试一下,看看它是如何工作的。我也正确地阅读了你的问题。您只需对
'name'=>$model->datetime
行进行注释即可尝试。只是根据默认的控制器actionUpdate,yii希望表单的所有值都位于一个数组中,如:ModelName[attributeName],但当您更改名称时,它会变得不同,在您的情况下,yyyy-mm-dd。是的,您是对的,这确实是一个错误,但我已经评论过了,它也不起作用。无论如何,我搬到了一个日期/时间选择器,因为我也需要时间,而且只是在第一次尝试时工作,所以无论如何都不必解决这个问题。谢谢
$model->attributes = $_POST['DateModel'];
$model->datetime = $_POST[''.$model->datetime];