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,
));
}
É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.
Speeedfire:
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,
));
}
É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.
Speeedfire:
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.
Á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.
phtamas
(Phtamas)
March 28, 2012, 8:35pm
6
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,
));