Yii Framework Forum: Ajax validálás, ajax kérés - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ajax validálás, ajax kérés Rate Topic: -----

#1 User is offline   Speeedfire 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 192
  • Joined: 02-March 12

Posted 31 March 2012 - 08:21 AM

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.

Attached File  kep.jpg (35.14K)
Number of downloads: 8

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?
0

#2 User is offline   phtamas 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 527
  • Joined: 26-February 11
  • Location:Mezőtúr, Hungary

Posted 31 March 2012 - 02:42 PM

View PostSpeeedfire, on 31 March 2012 - 08:21 AM, said:

Az egyiken konkrétan még error500-at is dob, de nem jövök rá, hogy miért.


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).

View PostSpeeedfire, on 31 March 2012 - 08:21 AM, said:

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?


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.
1

#3 User is offline   Speeedfire 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 192
  • Joined: 02-March 12

Posted 01 April 2012 - 09:07 AM

View Postphtamas, on 31 March 2012 - 02:42 PM, said:

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?

Attached File  kep.jpg (50.37K)
Number of downloads: 7

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.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users