Dropdown check

Azt szeretném elérni hogy amikor kiválaszják az évet,hónapot,napot akkor a rules ellenőrizze le hogy helyes e a dátum, ha nem akkor a nap alá meg írja hogy Helytelen dátum.

Elvileg ezzel azt kellene csinálnia hogy ha megváltozik a bármelyik mező akkor lefutatja a Checkdate függvényt.


public function rules()

	{

		return array(

				array('born_year_id,born_month_id,born_day_id', 'numerical', 'integerOnly'=>true),

				array('born_year_id,born_month_id,born_day_id', 'Checkdate'),

		);

	}

Ez maga a Checkdate függvény


public function Checkdate($attribute,$params)

	{

		if(!checkdate($this->born_month_id,$this->born_day_id,$this->born_year_id)){

			$this->addError('born_day_id','Helytelen dátum!.');

		}

	}

Ez meg a form egy része


<div class="row">

		<h6>Születésnapod</h6>

		<?php echo $form->label($model,'born_year_id'); ?>

		<?php echo $form->dropDownList($model,'born_year_id', $model->getBornYearOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'born_year_id'); ?>

		

		<?php echo $form->label($model,'born_month_id'); ?>

		<?php echo $form->dropDownList($model,'born_month_id', $model->getBornMonthOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'born_month_id'); ?>

		

		<?php echo $form->label($model,'born_day_id'); ?>

		<?php echo $form->dropDownList($model,'born_day_id', $model->getBornDayOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'born_day_id'); ?>

	</div>



Igazából a legjobb az lenne ha lenne egy dátumkiválasztó mező egyből és nem nekem kellene megírni.

+rules ba kellene egy olyan is ami leellenőrzi hogy egyáltalán van a select ha meg nincs írja ki hogy Válasz valamit.

Szia,

Nem igazán értem miért van erre szükség, vagy hogy pontosan mit szeretnél. Eleve a dropDownList-et nyilván csak olyan adatokkal töltöd fel, amit ki lehet választani. Ha az a lényeg, hogy ne lehessen egyik select-et (év/hónap/nap) sem üresen elküldeni, akkor símán egy required rule kell neki, és hogy nem lehet üres.

Egyébiránt meg használhatnád a CJuiDatePicker-t is: http://www.yiiframework.com/doc/api/1.1/CJuiDatePicker

Sziasztok,

Gondolom az a probléma, hogy ki lehet választani pl. a febr. 31-et, de tényleg felesleges a modelben ezt ellenőrizni, én is a CJuiDatePicker -t javaslom. Ha csak nem a megrendelőnek kifejezett kivánsága a dropbownlist. (nálam volt ilyen eset, hogy billentyűvel tudja kezelni a formot, ne kelljen egérrel odakattintani)

Ha egyedi validáció kell, akkor jó amit csináltál, mi vele a gond?

Create your own Validation Rule

Hát csak annyi hogy nem csinál semmit.

Hiába váltogatom a regisztrációs oldalon az elemeket nem fut le a függvény váltás-ra.

Ezt a CJuiDatePicker-t hogy lehet elhelyezni egy view-ben.

pl nekem ilyen a view-em most.


<?php

$this->pageTitle=Yii::app()->name . ' - Regisztráció';

$this->breadcrumbs=array(

	'Regisztráció',

);

?>


<h1>Regisztráció</h1>


<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'register-form',

	'enableClientValidation'=>true,

	'clientOptions'=>array(

		'validateOnSubmit'=>true,

	),

)); ?>


	<p class="note">A <span class="required">*</span> jelzett mezők kitöltése kötelező!.</p>


	<div class="row">

		<?php echo $form->labelEx($model,'username'); ?>

		<?php echo $form->textField($model,'username'); ?>

		<?php echo $form->error($model,'username'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->label($model,'lastName'); ?>

		<?php echo $form->textField($model,'lastName'); ?>

		<?php echo $form->error($model,'lastName'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->label($model,'firstName'); ?>

		<?php echo $form->textField($model,'firstName'); ?>

		<?php echo $form->error($model,'firstName'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->label($model,'gender_id'); ?>

		<?php echo $form->dropDownList($model,'gender_id', $model->getGenderOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'gender_id'); ?>

	</div>

	

	<div class="row">

		<h6>Születésnapod</h6>

		<?php echo $form->label($model,'born_year_id'); ?>

		<?php echo $form->dropDownList($model,'born_year_id', $model->getBornYearOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'born_year_id'); ?>

		

		<?php echo $form->label($model,'born_month_id'); ?>

		<?php echo $form->dropDownList($model,'born_month_id', $model->getBornMonthOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'born_month_id'); ?>

		

		<?php echo $form->label($model,'born_day_id'); ?>

		<?php echo $form->dropDownList($model,'born_day_id', $model->getBornDayOptions(), array('prompt'=>Yii::t('layout','Kérlek válasz valamit!'))); ?>

		<?php echo $form->error($model,'born_day_id'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'password'); ?>

		<?php echo $form->passwordField($model,'password'); ?>

		<?php echo $form->error($model,'password'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->labelEx($model,'password2'); ?>

		<?php echo $form->passwordField($model,'password2'); ?>

		<?php echo $form->error($model,'password2'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->labelEx($model,'email'); ?>

		<?php echo $form->textField($model,'email'); ?>

		<?php echo $form->error($model,'email'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->labelEx($model,'question'); ?>

		<?php echo $form->textField($model,'question'); ?>

		<?php echo $form->error($model,'question'); ?>

	</div>

	

	<div class="row">

		<?php echo $form->labelEx($model,'answer'); ?>

		<?php echo $form->textField($model,'answer'); ?>

		<?php echo $form->error($model,'answer'); ?>

	</div>

	

	<?php if(extension_loaded('gd')): ?>

	<div class="row">

		<?php echo $form->labelEx($model,'verifyCode'); ?>

        <div>

        <?php $this->widget('CCaptcha'); ?>

        <?php echo $form->textField($model,'verifyCode'); ?>

        </div>

	</div>

	<?php endif; ?>


	<div class="row buttons">

		<?php echo CHtml::submitButton('Regisztráció'); ?>

	</div>


<?php $this->endWidget(); ?>

</div><!-- form -->

Végre sikerült megcsinálni.


<?php 

	echo $form->label($model,'publishDate');

	Yii::import('application.extensions.CJuiDatePicker.CJuiDatePicker');

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

        'name'=>'publishDate',

		// additional javascript options for the date picker plugin

		'options'=>array(

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

        'showAnim'=>'fold',

		'changeMonth' => 'true',

        'changeYear'=>'true',

		'yearRange'=>'1900',

		),

		'htmlOptions'=>array(

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

		),

		 'language'=>'hu',

	));

?>

Ez a CJuiDatePicker tényleg szebb.