tri, on 16 April 2010 - 04:47 AM, said:
Seems like CHtml::activeName(model, attribute) will generate the correct name for you. In my case, I have to take care of an additional data type issue (validation error due to type mismatch).
/Tommy
Extend the CJuiDatePicker as given below and save at applications' widget folder
<?php
Yii::import('zii.widgets.jui.CJuiDatePicker');
class ECJuiDatePicker extends CJuiDatePicker
{
/**
* Run this widget.
* This method registers necessary javascript and renders the needed HTML code.
*/
public function run()
{
list($name,$id)=$this->resolveNameID();
if(isset($this->htmlOptions['id']))
$id=$this->htmlOptions['id'];
else
$this->htmlOptions['id']=$id;
if(isset($this->htmlOptions['name']))
$name=$this->htmlOptions['name'];
else
$this->htmlOptions['name']=$name;
if($this->hasModel())
echo EHtml::activeTextField($this->model,$this->attribute,$this->htmlOptions);
else
echo EHtml::textField($name,$this->value,$this->htmlOptions);
$options=CJavaScript::encode($this->options);
$js = "jQuery('#{$id}').datepicker($options);";
if (isset($this->language)){
$this->registerScriptFile($this->i18nScriptFile);
$js .= "\njQuery('#{$id}').datepicker('option', jQuery.datepicker.regional['{$this->language}']);";
}
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$id, $js);
}
}
?>
Apply the new extended class as given below in your view file and will work definitively
<?php $this->widget('application.widgets.base.ECJuiDatePicker', array('model'=>$model,'attribute'=>'scheduleEndDate',
// additional javascript options for the date picker plugin
'options'=>array(
'minDate'=>"0",
'maxDate'=> "60",
'showOn'=>'button',
'buttonImage'=>'images/calendar.gif',
'buttonImageOnly'=>true,
'dateFormat'=>Common::clientDateFormat(),
),
'htmlOptions'=>array(
'style'=>'height:20px;width:100px;'
,'readonly'=>'true'
),
));
?>