Zum Inhalt springen

crdate

Erstellt am 21. Juni 2010 · 5 Antworten · letzte Antwort am 21. Juni 2010

Tags: Frage

frohike ·

Hi,

habe eine Extension mit extbase erstellt und hänge bei folgendem Problem: ich bekomme die Daten der Spalte crdate nicht. In der DB stehen sie drinnen, im Domain Model bleibt die Eigenschaft leer. Alle anderen Spalten funktionieren.

Mein Code:

	/**
	 * Erstellungsdatum
	 * @var DateTime
	 */
	protected $crdate;

	/**
	 * Gets the start date
	 * @return DateTime The start date
	 */
	public function getCrdate() {
		return $this->crdate;
	}

	/**
	 * Sets the start date.
	 * @param DateTime $crdate The start date
	 * @return void
	 */
	public function setCrdate(DateTime $crdate) {
		$this->crdate = $crdate;
	}

Wo liegt der Fehler?

Danke für alle Hilfe!!
Markus

frohike ·

Hi Mario,

leider kein Erfolg. Hab schon alles mögliche versucht. Es scheint, als würde der Wert nicht gesetzt werden, weil er keinen Eintrag in der TCA hat.

Ich versuch mal die Stelle zu finden, wo die DB gefragt wird - bevor die Werte dem Domain Object zugewiesen werden. Vielleicht kann ich dort was durch debuggen herausfinden.

frohike ·

Habe herausgefunden, dass die (protected) Eigenschaften gesetzt werden, auch wenn es keinen getter und setter gibt. Beim crdate aber leider nicht. hmmm... :o

frohike ·

Also ich verwende extbase 1.2.0beta2 und dort wird in
extbase\Classes\Persistence\Mapper\DataMapFactory.php:Tx_Extbase_Persistence_Mapper_DataMapFactory->buildDataMap die TCA durchgegangen und die sog. DataMap aufgebaut. Und ohne DataMap-Eintrag wird das property im Domain Object nicht gesetzt.

Es gibt auch eine Funktion addMetaDataColumnNames in der DataMapFactory, die IMO die DataMap für die Meta-Daten erzeugen sollte. Tut sie aber nicht. Absicht oder Bug?
Ich glaube, das Verhalten war in früheren extbase Versionen anders (habs aber nicht nachgeprüft).

Es gibt eine Möglichkeit eines sog. ColumnMappings - das untersuche ich gerade.

frohike ·

HEUREKA ich habs!

Folgende Typoscript Konfiguration hat die Lösung gebracht.

config.tx_extbase.persistence.classes {
	Tx_Extensionkey_Domain_Model_Meineentitaet {
		mapping.columns {
			crdate.mapOnProperty = crdate
		}
	}
}

Danach hat das Property ganz normal funktioniert.

Hoffe dass mein aufwendiges Debuggen anderen hilft