Mengatur Datepicker

Para master2 semua…

Ane lagi belajar JUI nih… tapi menemukan kendala saat implementasi kode berikut :




<?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(

					'model'=>$model,

					'attribute'=>'start_time',

					// additional javascript options for the date picker plugin

					'options'=>array(

						'showAnim'=>'fold',

						'dateFormat'=>'dd-mm-yy',

					),

					'htmlOptions'=>array(

						//'style'=>'height:10px;',

						'value'=>date('d-m-y'),

					),

		)); ?>



Kendalanya adalah :

Jika saya ingin membuat agar tahun nya bisa di ganti, pake ComboBox…gimana ya…

Karena kalo digunakan untuk mengisi tgl_lahir kan Tahun yang Lama…

mohon masukannya… Terimakasih sebelumnya…!

  1. Kan emang bisa di ganti itu tahunnya, tahunnya juga masih bisa di mundurin <<< ma’af ane kurang ngerti maksud ente gan :P.

  2. Ini niatnya sebagian pake Combobox terus di campur JUI ya gan?. kok gak satu aja gan, JUI aja gitu kan ud mumpuni. Atau Combobox biar keluatan clasic <<< ma’af klo bikin kesel agan :P.

Gini gan yang Ane Maksud…

Tampilan DatePicker yang di Yii kan seperti ini1761

date_picker.png
, nah dari tampilan itu… jika untuk memilih tanggal lahir kan agak susah jika tahun lahir nya dah lama banget, alias dah tua,

Ane Pengen tahunnya bisa dipilih seperti gambar ini.1762

tgl_lahir.png
agar lebih mudah…

Adakah Solusi lain dari agan??

Coba lihat dokumentasinya jQuery Datepicker gan. semoga berhasil

pada options ditambahi ini gan





'options'=>array(

				'showAnim'=>'fold',

				'dateFormat'=>'dd-mm-yy',

				//'changeMonth'=>true,

				'changeYear'=>true, // biar tahunnya bisa combobox



dokumentasi detail datepicker ada di http://jqueryui.com/demos/datepicker/

disitu lengkap gan, ente tinggal atur, terus masukin ke 'options, contoh

$this->widget(‘zii.widgets.jui.CJuiDatePicker’, array(

          'attribute'=&gt;'docdate',


          'model'=&gt;&#036;model,


          // additional javascript options for the date picker plugin


          'options'=&gt;array(


              'showAnim'=&gt;'fold',


			  'dateFormat'=&gt;'yy-mm-dd',


			  'changeYear'=&gt;true,


			  'changeMonth'=&gt;true


          ),


          'htmlOptions'=&gt;array(


              'style'=&gt;'height:20px',


              'size'=&gt;'20',


          ),


      ));

thank… to All, it work…!

Dear Masters,

kalo kita mau merubah posisinya ketika datepicker popup, bagaimana ya caranya?

secara default, dia selalu ke atas. nah saat ini dia selalu keatas, dan itu menghalangi menu utama saya.

terima kasih sebelumnya atas petunjuknya :D

hooo thx atas pencerahannya,ane kira g bisa diatur,terus gan ane mau tanya,klo ane mau pale date format dd-mm-yy nah itu cara nyimpen di db gimana ya?kok ane coba tanggalnya g bisa kesimpen :( trus dari format tanggal yy-mm-dd dri db diubah ke dd-mm-yy gimana yaa?





$this->widget('zii.widgets.jui.CJuiDatePicker', array(

                'model' => $model,

                'attribute' => 'dob',

                'options' => array(

                    'showAnim' => 'fold',

                    'dateFormat' => 'mm-dd-yy', // save to db format

                    'altField' => '#self_pointing_id',

                    'altFormat' => 'dd-mm-yy', // show to user format

                ),

                'htmlOptions' => array(

                    'style' => 'height:20px;'

                ),

            ));

semoga membantu

hooow,mkih bro D,sangat membantu banget :D terus klo di view(bukan dalam form) kita mau nampilin format nya dd-mm-yyyy kita ubah gimana ya?

terus ane mau coba tahun yang bisa di input tu maximal 17 tahun dari sekarang,(jadi yg lahirnya lbih dri 17 tahun yg lalu g bisa nemu tanggalnya)




$this->widget('zii.widgets.jui.CJuiDatePicker', array(

		//'attribute'=>'dob',

		'model'=>$model,

		'name'=>'ChildData[dob]',

		// additional javascript options for the date picker plugin

		'options'=>array(

		'showAnim'=>'fold',

		'dateFormat'=>'yy-mm-dd',

		'minDate'=>'-17y',

		//'maxDate'=>'+1y',

		'changeYear'=>true,

		'changeMonth'=>true,


		),

		'htmlOptions'=>array(

		'style'=>'height:20px',

		'size'=>'20',

		),

		)); 

kayak gitu bukan ya?tapi kok yg muncul cuma dri tahun 2001-2011 ya :(

dan klo ane mau validasiin klo umur si orang tersebut >17 mucul psan eror xxxx dan g bisa di save kira2 codingan di controller ane mesti gimana ya?makasih semuanya :)

kalau mau range di masukin




'options'=>array(

----

'yearRange'=>'-17', 

-------

)



thx ya bro :D it works,:D terus nanya satu lagi kalau ane mau validasiin di controller klo umur anak itu lebih dari 18 tahun dia di tolak datanya +ngasih pesan errornya gimana ya?

ni contoh bikin rule sendiry di model…




public function rules()

	{

return array(

----------------

array('YEAR_DARI_FORM','cekYear'),

--------------------

);

}


public function cekYear($attribute,$params)

	{

$batas = strtotime("-17 year");

  if(strtotime($this->YEAR_DARI_FORM) > strtotime(date("Y-m-d",$batas)))

$this->addError('YEAR_DARI_FORM','ketuan cuy........');

	}



blom saya tes tp harusnya sukses…heheheh :P

Waahh… makasih agan2… ini yg ane cari. Makasih pencerahannya

baru nyadar,kok ane g bisa masuk ya tanggalnya

kodingannya kayak gini

<code>

$this->widget(‘zii.widgets.jui.CJuiDatePicker’, array(

	//'attribute'=&gt;'dob',


	'model'=&gt;&#036;model,


	'name'=&gt;'ChildData[dob]',


	// additional javascript options for the date picker plugin


	'options'=&gt;array(


	'showAnim'=&gt;'fold',


	'dateFormat'=&gt;'yy-mm-dd',


	'altField' =&gt; '#ChildData_dob',


	'altFormat' =&gt; 'dd-mm-yy',


	'yearRange'=&gt;'-18',


	'changeYear'=&gt;true,


	'changeMonth'=&gt;true,





	),&lt;/code&gt;

kenapa kalau di var_dump dobnya formatnya dd-mm-yy?caranya biar pas di save balik ke yy-mm-dd gimana ya?

mungkin seperti ini gan




<?php $this->widget('zii.widgets.jui.CJuiDatePicker',

			array(

				// you must specify name or model/attribute

				'model'=>$model,

				'attribute'=>'birth_date',

				'value' => $model->birth_date,

				'options' => array(

					'dateFormat'=>'yy-mm-dd',

					'altFormat'=>'dd-mm-yy',

					'altField' => '#Person_birth_date',

					'showOn'=>'button',

					//'buttonImage'=>Yii::app()->request->baseUrl.'/images/technorati2.png',

					//'buttonImageOnly'=> true,

					'changeMonth' => 'true',

					'changeYear' => 'true',

					'yearRange'=>'-90',

					//'showButtonPanel' => 'true', 

					'constrainInput' => 'false', 

					'duration'=>'fast', 

					'showAnim' =>'slide',

				),

			)

		); ?>



keterangan




'altField' => '#Person_birth_date',



coba perhatikan ini gan …!




'model'=>$model,

'attribute'=>'birth_date',



karena model saya adalah Person, kemudian atributnya birth_date maka penulisan untuk ‘altField’ adalah #Person_birth_date bukan #Person[birth_date], untuk lebih jelas dapat di cek menggunakan Firebug…!

kemudian agar dapat disimpan tambahkan kode ini di Model




protected function beforeSave()

	{

		if(parent::beforeSave())

		{

			// input => 99-99-9999

			// simpan => 9999-99-99

			$this->birth_date=substr($this->birth_date,6,4).'-'.substr($this->birth_date,3,2).'-'.substr($this->birth_date,0,2);

			return true;

		}

		else

			return false;

	}



semoga membantu

masih g bisa bro,

:(

di altField nya sih bener formatnya dd-mm-yy

tapi pas ane create yg kekirim formatnya dd-mm-yy juga,

oh ya gan ane mau OOT dikit,

ko waktu ane iseng nge create data,di kolom2 yang harus nya require ane g isi ane klik save dia kelempar ke halaman selanjutnya langsung ya?g muncul error2 dlu gtu

oh ya gan ane g liat code model agan tadi,ya udah bsa ke save :D

Mau sharing,

Selain pake afterFind dan beforeSave, kita bisa pake pure CJuiDatePicker, saya coba2 karena pake afterFind/beforeSave itu jadi error pas pake UniqueMultiColumnValidator. Idenya adalah CjuiDatePicker sebagai fasilitas aja untuk mbuat tgl ditampilkan dalam format "dd-mm-yyy"




<?php

        $this->widget('zii.widgets.jui.CJuiDatePicker', array(

            'name' => 'dateOfBirth',

            'value' => date('d-m-Y', strtotime($model->birthDate)),  // perlu untuk actionUpdate

            'options' => array(

                'showAnim' => 'fold',

                'dateFormat' => 'dd-mm-yy',  // format untuk tampilan

                'altFormat' => 'yy-mm-dd',   // format untuk disimpan ke database

                'altField' => '#Member_birthDate',

                'changeMonth' => 'true',

                'changeYear' => 'true',

            ),

            'htmlOptions' => array(

                'class' => 'small'

            ),

        ));

        echo CHtml::activeHiddenField($model, 'birthDate');

        ?>



Semoga berguna…