Hallo Zusammen,
ich versuche mich gerade an meiner ersten Extension mit Extbase und komme einfach nicht weiter. Ich bin mir nicht ganz sicher, ob ich das Repository-Konzept ganz richtig verstanden habe und hoffe, mir kann jemand auf die Sprünge helfen 😉
Um folgendes gehts: einem Film sollen Beteiligte($person) sowie deren Funktion($role) zugeordnet werden. Das löse ich über eine Zwischentabelle personRole mit 1:1-Relationen.
Das Anlegen und Speichern ist auch kein Problem. Wenn ich allerdings bestehende Datenbankeinträge bearbeiten will, werden zunächst auch die geänderten Werte aus dem Formular scheinbar richtig ins entsprechende Repository geschrieben
(var_dump($personRoleRepository) in der updateAction()), unter private '_cleanProperties' steht auch der gespeicherte Wert.
Das Formular wird also richtig ausgelesen und gemappt.
Beim Persistieren des Repositorys (redirect oder PersistenceManager->persistAll()), werden die geänderten Daten aber nicht in die Datenbank übernommen :o
Das Model PersonRole :
/**
* personId
*
* @var Tx_HtwkIptv_Domain_Model_Person
* @validate NotEmpty
*/
protected $personId;
roleId und clipId entsprechend..
TCA:
'person_id' => array(
'exclude' => 0,
'label' => 'LLL:EXT:htwk_iptv1/Resources/Private/Language/locallang_db.xml:tx_htwkiptv_domain_model_personrole.person_id',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_htwkiptv_domain_model_person',
'minitems' => 0,
'maxitems' => 1,
'appearance' => array(
'collapse' => 0,
'levelLinksPosition' => 'top',
'showSynchronizationLink' => 1,
'showPossibleLocalizationRecords' => 1,
'showAllLocalizationLink' => 1
),
),
und im Controller:
public function initializeAction() {
$this->personRepository = t3lib_div::makeInstance('Tx_HtwkIptv_Domain_Repository_PersonRepository');
$this->personRoleRepository = t3lib_div::makeInstance('Tx_HtwkIptv_Domain_Repository_PersonRoleRepository');
$this->roleRepository = t3lib_div::makeInstance('Tx_HtwkIptv_Domain_Repository_RoleRepository');
}
public function updateAction(Tx_HtwkIptv_Domain_Model_PersonRole personRole = NULL) {
if($personRole){
$this->personRoleRepository->update($personRole);
}
$this->redirect('new', NULL, NULL, Array('clip'=>$clip));
}
statt des redirects hab ich's auch schon mit
Tx_Extbase_Dispatcher::getPersistenceManager()->persistAll();
versucht, die neuen Werte erscheinen dann auch unter private '_cleanProperties'....
heißt das, das Repository-Object speichert den Wert und der Fehler liegt beim Auflösen des Objects in die Datenbank ??
Oder liegt der Fehler im Model oder der TCA und ich habe da was Grundlegendes nicht richtig kapiert??
Bin für jeden Hinweis dankbar !
Gruß f6