2 Models in einem View


(Crodealer) #1

Hallo,

ich habe folgendes Problem.

Ich habe zwei Models erstellt

car und driver, nun möchte ich im view Ordner in der create.php folgende zwei Felder erstellen.


<?php echo CHtml::activeTextField($car,'baseform',array('size'=>40,'maxlength'=>155)); ?>

<?php echo CHtml::activeTextField($driver,'baseform',array('size'=>40,'maxlength'=>155)); ?>

In der create.php versuche ich nun auf car und driver zuzugreifen jedoch ohne Erfolg.

Mein Code




	public function actionCreate()

	{

		$car = new car;

		$driver = new driver;


		print_r($car->baseform);    // gefüllt

		print_r($driver->baseform); // LEER

		...

	}

Weiß jemand woran es liegt?


(Schanz15) #2

Ich nehme an du meinst du versuchst in der xxxController.php auf die Werte die im View eingegeben wurden zuzugreifen?

Naja, also dafür musst du erstmal das Model Instanzieren - Das hast du ja gemacht

Aber bei dir fehlt der Part in dem du überprüfst ob es Daten gibt die eingegeben wurden. Und falls ja musst du dem Model ja diese Daten auch zuweisen.

Also:



&#036;car = new car;


&#036;driver = new driver;





if(isset(&#036;_POST['car']) &amp;&amp; isset(&#036;_POST['driver']))


{


    &#036;car-&gt;attributes = &#036;_POST['car'];


    &#036;driver-&gt;attributes = &#036;_POST['driver'];


}

Warum bei dir $car gefüllt ist versteh ich allerdings nicht… Vermutlich sind das einfach die Default values aus der DB.


(Crodealer) #3

Diese Zeile hat gefehlt! Dank dir!!


(Crodealer) #4

Warum kann ich denn im Car - Controller nicht folgenden Befehl ausführen?


$driver->save()


(Schanz15) #5

Dürfte keine Probleme geben. Ist $driver->validate() denn true?

Wenn nicht, sind die Eingaben nicht im richtigen Format gewesen.


(Crodealer) #6

validate gibt leider false zurück.

Wie kann ich mir die Fehlermeldungen von validate ausgeben lassen?


(Schanz15) #7

Zum Debuggen: http://www.yiiframework.com/doc/api/CModel#errors-detail

Im View: http://www.yiiframework.com/doc/api/CHtml#errorSummary-detail