Hallo zusammen,
ich stehe gerade vor dem Problem, dass das Checkbox-Widget in einem DCA nach dem Kopieren des Eltern-Elements die alten IDs enthält und überlege zurzeit, wie ich es am besten hin bekomme, die neuen IDs zu hinterlegen. Zurzeit gibt es die Tabelle tl_lom_election, die folgende Child-Tables umfasst.
Code:
- tl_lom_election
--- tl_lom_candidate
--- tl_lom_topic
----- tl_lom_question
------- tl_lom_answer (enthält ein CheckBox-Widget mit Einträgen aus tl_lom_candidate)
Im DCA für den Table tl_lom_answer steckt momentan ein CheckboxWidget, um Einträge aus tl_lom_candidate anzuzeigen, die sich den gemeinsamen Parent tl_lom_election teilen. Dieser wird über folgenden Callback befeuert.
PHP-Code:
/**
* @Callback(table="tl_lom_answer", target="fields.candidate.options")
*/
public function answerCandidateOptions(DataContainer $dc)
{
$options = [];
$objQuestion = LomQuestionModel::findByPk($dc->activeRecord->pid);
$objTopic = LomTopicModel::findByPk($objQuestion->pid);
$objCandidate = LomCandidateModel::findByPid($objTopic->pid, ['order' => 'sorting']);
while($objCandidate->next())
{
$name = $objCandidate->name;
if ($objCandidate->party)
{
$name .= ' [' . LomPartyModel::findByPk($objCandidate->party)->name . ']';
}
$options[$objCandidate->id] = $name;
}
return $options;
}
Dupliziere ich nun tl_lom_election, bekomme alle Child-Records die ebenfalls dupliziert wurden neue IDs, was ja technisch auch unumgänglich ist. Aber wie komme ich in meinem Feld candidate beim Duplizieren an die neuen IDs?
PHP-Code:
...
'candidate' => [
'inputType' => 'checkbox',
'eval' => ['multiple'=>true],
'sql' => 'blob NULL'
],
...
Bisher sind mir zwei Optionen in den Sinn gekommen.
- Die Tabelle tl_lom_candidate bekommt ein zusätzliches Feld mit einer dynamischen ID, die in das Feld "candidate" geschrieben wird, nicht unique ist und somit dupliziert werden kann.
- Nach dem Kopieren ermittle ich die neuen IDs, indem ich alle Felder bis auf die ID selbst miteinander abgleiche. Doppelte Inhalte führen dann natürlich ggf. zu falschen Verknüpfungen.
Bevor ich mir hier etwas zusammen bastle wäre meine Frage, ob hier vielleicht jemand schon vor einem ähnlichen Problem stand und eine Lösung für das Problem gefunden hat.
Dank und Gruß
Dennis
Lesezeichen