Ajax validálás, ajax kérés

Van pár oldal ahol nem akar lefutni az ajax validálás, de nem jövök rá, hogy mi lehet a gond.

Minden egyes actionCreate model definiálás után van egy ilyenem:


protected function performAjaxValidation($model)

	{

		if(isset($_POST['ajax']) && $_POST['ajax']==='formid-form')

		{

			echo CActiveForm::validate($model);

			Yii::app()->end();

		}

	}

Ezek után pedig a feldolgozása a post adatoknak. A form-oknál pedig engedélyezve van az ajaxvalidation.

Az egyiken konkrétan még error500-at is dob, de nem jövök rá, hogy miért. Elvileg itt csak a model-t kell megadni és hogy mi az id-ja a form-nak.

2732

kep.jpg

Illetve lenne egy olyan kérdésem is, hogy ajax függvényeket, hogy szoktak írni yii-re? Csinálni szoktak külön action-öket és arra hivatkoznak?

A log fájlban (protected/runtime/application.log) valószínűleg ott lesz a megfejtés - feltéve hogy a CFileLogRoute engedélyezve van a konfigurációban (ha a yiic webapp parancs generálta a konfig fájlt, akkor alapértelmezésben benne van).

Igen, jellemzően így. Ha erősen ajaxra épülő alkalmazást írok, akkor én külön ajax kontrollereket szoktam használni, de ha csak 1-2 ajax requestről van szó, akkor a normál kontrollerhez adom hozzá az actiont. Ilyenkor hasznos lehet az ajaxOnly filter.

Na, az egyikre rájöttem, ahol az error500-at dobja.

Ilyen mezőim vannak az adatbázisban, hogy nap_1, nap_2 stb

Viszont én ezt úgy állítom össze, hogy a formban van ilyen, hogy nap_1[0] és nap_1[1] stb, és ezzel nem tud már mit kezdeni, kicsit alakítottam rajta, de most meg más baja van. Hogy lehetne ezt kivitelezni?

2733

kep.jpg

Próbáltam a modelben ezt megoldani, de nem jött össze:


array('nap_1[0], nap_2[0], nap_3[0], nap_4[0], nap_5[0], nap_6[0], nap_7[0]', 'length', 'max'=>20),

                        array('nap_1[1], nap_2[1], nap_3[1], nap_4[1], nap_5[1], nap_6[1], nap_7[1]', 'length', 'max'=>20),

A másik pedig a user modulnál van, ott valami miatt be sem tölti a jquery-t és a yiiactiveform js fájlokat a validáláshoz.

A reg. view:


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

	'id'=>'registration-form',

	'enableAjaxValidation'=>true,

	'disableAjaxValidationAttributes'=>array('RegistrationForm_verifyCode'),

	'htmlOptions' => array('enctype'=>'multipart/form-data'),

)); ?>

Itt meg van adva, hogy true.

A controllerben (UActiveForm) pedig ez van a run-nál:


public function run()

	{

		echo CHtml::endForm();

		if(!$this->enableAjaxValidation || empty($this->_attributes))

			return;

		$options=$this->clientOptions;

		if(isset($this->clientOptions['validationUrl']) && is_array($this->clientOptions['validationUrl']))

			$options['validationUrl']=CHtml::normalizeUrl($this->clientOptions['validationUrl']);

		$options['attributes']=array();

		foreach ($this->_attributes as $attr=>$item) {

			if (in_array($attr,$this->disableAjaxValidationAttributes)===false) {

				array_push($options['attributes'],$item);

			}

		}

		if($this->_summary!==null)

			$options['summaryID']=$this->_summary;

				

		$options=CJavaScript::encode($options);

                Yii::app()->clientScript->registerCoreScript('yiiactiveform');

		$id=$this->id;

		Yii::app()->clientScript->registerScript(__CLASS__.'#'.$id,"\$('#$id').yiiactiveform($options);");

	}

Tehát elvileg be kellene töltenie ezeket.