Yii Framework Forum: Input mező validálása - Yii Framework Forum

Jump to content

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

Input mező validálása Rate Topic: -----

#1 User is offline   Speeedfire 

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

Posted 28 March 2012 - 09:23 AM

Létrehoztam egy controllert egy db create action-nel. Legyen most pl a controller neve Media
Van egy másik táblám, amiből kiszedem az adatokat. Ezt meg is adom neki a create elején. $model = new Kategoria;
A views mezőben szép minden meg okés, de ha üres mezőt akarok elküldeni akkor nem jelez hibát. Visszaugrik az eredeti oldalra, ami jó. Csak épp a hibát nem jelzi ki. :)

Ez van a view-sban.
	<div class="row">
		<?php echo $form->labelEx($model,'kategoria'); ?>
                <?php echo $form->dropDownList($model,'kategoria', $valasz, $prompt); ?>
		<?php echo $form->error($model,'kategoria'); ?>
	</div>


Ez pedig a controller része.


class MediaController ext... {
public function actionCreate()
	{
                $model=new Kategoriak;
                //$model->validate(array('kategoria'=>'integer'));
                if(isset($_POST['Kategoriak']) && !empty($_POST['Kategoriak']['kategoria'])) {
                    $_SESSION['kategoria'] = $_POST['Kategoriak']['kategoria'];
                    $this->redirect(array(Yii::app()->baseUrl.'/user/registration'));
                }
		$this->render('create',array(
			'model'=>$model,
		));
	}

0

#2 User is offline   kiskp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 05-January 10
  • Location:Hungary

Posted 28 March 2012 - 09:38 AM

Én nem látok semmi olyan kódot, ami arra utalna, hogy bármilyen hibaüzenetet is meg kellene jelenítenie...
Talán ha nem kommentként szerepelne a $model validálása, több sikerrel járnál.

View PostSpeeedfire, on 28 March 2012 - 09:23 AM, said:

A views mezőben szép minden meg okés, de ha üres mezőt akarok elküldeni akkor nem jelez hibát. Visszaugrik az eredeti oldalra, ami jó. Csak épp a hibát nem jelzi ki. :)

class MediaController ext... {
public function actionCreate()
	{
                $model=new Kategoriak;
                //$model->validate(array('kategoria'=>'integer'));
                if(isset($_POST['Kategoriak']) && !empty($_POST['Kategoriak']['kategoria'])) {
                    $_SESSION['kategoria'] = $_POST['Kategoriak']['kategoria'];
                    $this->redirect(array(Yii::app()->baseUrl.'/user/registration'));
                }
		$this->render('create',array(
			'model'=>$model,
		));
	}


0

#3 User is offline   Speeedfire 

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

Posted 28 March 2012 - 09:49 AM

View Postkiskp, on 28 March 2012 - 09:38 AM, said:

Én nem látok semmi olyan kódot, ami arra utalna, hogy bármilyen hibaüzenetet is meg kellene jelenítenie...
Talán ha nem kommentként szerepelne a $model validálása, több sikerrel járnál.



A views-ba van egy ilyen sor.
 <?php echo $form->errorSummary($model); ?>


Akár kikommentezem, akár nem. Semmit nem jelenít meg. Pedig ki kellene írni, hogy nem lehet üres. A promt marad a drowpdown aktív elem.
0

#4 User is offline   Speeedfire 

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

Posted 28 March 2012 - 10:34 AM

View PostSpeeedfire, on 28 March 2012 - 09:49 AM, said:

A views-ba van egy ilyen sor.
 <?php echo $form->errorSummary($model); ?>


Akár kikommentezem, akár nem. Semmit nem jelenít meg. Pedig ki kellene írni, hogy nem lehet üres. A promt marad a drowpdown aktív elem.



Átírtam az if sort, de most sem ír ki semmit sem:

if(isset($_POST['Kategoriak']) && !empty($_POST['Kategoriak']['kategoria']) && $model->validate(array(array('kategoria','numerical', 'integerOnly'=>true), array('kategoria', 'required')))) {


Ellenben ha, csak $model->validate(), akkor kiírja, de nekem akkor kiír olyat is ami nem kell.
0

#5 User is offline   Speeedfire 

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

Posted 28 March 2012 - 02:47 PM

Átírtam erre:
if(isset($_POST['Kategoriak']) && $model->validate(array('kategoria', 'required'))) {


Most már majdnem jó, csak épp bármit adok meg neki, mindig azt írja ki, hogy üres a mező. Még ha valójában nem üres. :)
Nyomtam a post-ra egy var_dump-ot és mutatta, hogy van benne adat.
0

#6 User is offline   phtamas 

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

Posted 28 March 2012 - 03:35 PM

Két probléma van:
- A validate() metódus nem így működik. Nem tudod paraméterként átadni neki a validálási szabályokat, csak a validálandó tulajdonságok neveit. A szabályokat a model rules() metódusában kell meghatározni.
- Nem látom a kódodban, hogy hol adod át a $_POST-ban kapott értékeket a model példánynak. A $model->validate() elé be kellene szúrni egy ilyen sort:
$model->attributes = $_POST['Kategoriak'];

1

#7 User is offline   Speeedfire 

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

Posted 28 March 2012 - 03:42 PM

View Postphtamas, on 28 March 2012 - 03:35 PM, said:

Két probléma van:
- A validate() metódus nem így működik. Nem tudod paraméterként átadni neki a validálási szabályokat, csak a validálandó tulajdonságok neveit. A szabályokat a model rules() metódusában kell meghatározni.
- Nem látom a kódodban, hogy hol adod át a $_POST-ban kapott értékeket a model példánynak. A $model->validate() elé be kellene szúrni egy ilyen sort:
$model->attributes = $_POST['Kategoriak'];



Ismét megmentettél. Most így okés. :)

                if(isset($_POST['Kategoriak'])) {
                    $model->attributes = $_POST['Kategoriak'];
                    if($model->validate(array('kategoria'))) {
                        $_SESSION['kategoria'] = $_POST['Kategoriak']['kategoria'];
                        $this->redirect(array(Yii::app()->baseUrl.'/user/registration'));
                    }
                }
		$this->render('create',array(
			'model'=>$model,
		));

0

Share this topic:


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

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