[Frage] Fremdschlüssel setzen TYPO3-Version: 8.6.0

  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    07. 03. 2017, 22:52

    Da ich jetzt seit 3 Wochen einfach nicht weiter komme, frage ich euch:

    Also ich habe zwei Tabellen:
    Ansprechpartner - Behoerde (n:m)
    Im Model für den Ansprechpartner ist ein Feld: behoerdeId

    Mein AnsprechparnterController::addFormAction() sieht so aus:

    1. /**
    2.  * @param Ansprechpartner|null $ansprechpartner
    3.  */
    4. public function addFormAction(Ansprechpartner $ansprechpartner = null) {
    5. $this->view->assign('ansprechpartner', $ansprechpartner);
    6. $this->view->assign('behoerden', $this->behoerdeRepository->findAll());
    7. }

    Das entsprechende Template:

    1. <f:form action="add" object="{ansprechpartner}" name="ansprechpartner" arguments="{behoerde:behoerdeId}" additionalAttributes="{role:'form'}">
    2. ...
    3. <div class="form-group row">
    4. <label>Behörde</label>
    5. <f:form.select options="{behoerden}" optionLabelField="bezeichnung" property="behoerdeId" class="form-control"/>
    6. </div>
    7. </f:form>

    Und die Ansprechpartner::addAction()

    1. /**
    2.  * @param Ansprechpartner $ansprechpartner
    3.  * @param Behoerde $behoerde
    4.  */
    5. public function addAction(Ansprechpartner $ansprechpartner, Behoerde $behoerde) {
    6. $ansprechpartner->addBehoerdeId($behoerdeId);
    7. $this->ansprechpartnerRepository->add($ansprechpartner);
    8. $this->redirect('list');
    9. }

    Ich bekomme aber beim Absenden des Formulars (AddForm) immer nur Fehlermeldung. Entweder 'Required argument "behoerde" is not set' (mit den Paramter wie geschrieben) oder 'Invalid property mapping'.
    Kann mir jemand weiterhelfen?


  • 1
  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    08. 03. 2017, 13:10

    Also ein Freund konnte mich etwas weiterbringen.

    Die Property $behoerde muss aus den Actions addFormAction() und addAction() weg.
    Ebenfalls das Attribut 'arguments' im Formular.

    Damit ist aber das ObjectStorage im $ansprechpartner (Debugausgabe in addAction() als erste Zeile) empty.

    1. KKSoftware\Kkbaybw\Domain\Model\Ansprechpartnerprototypetransient entity
    2. baybwId => protected 23 (integer)
    3. behoerdeId => protectedTYPO3\CMS\Extbase\Persistence\ObjectStorageprototype object (empty)

    Im $this->request liegt die Information, in diesem Bsp.

    1. TYPO3\CMS\Extbase\Mvc\Web\Requestprototype object
    2. ...
    3. arguments => protected array(3 items)
    4. ...
    5. ansprechpartner => array(2 items)
    6. baybwId => '23' (2 chars)
    7. behoerdeId => '3' (1 chars)

    Im $ansprechpartner ist diese aber empty? Wieso?

  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    08. 03. 2017, 14:01

    Ich habe eine kleine Extension zum testen geschrieben.

    Für alle denen es so geht wie mir, hier nochmal der genau weg das Plugin einzubinden:
    1. Die test.zip nach typo3conf\ext entpacken
    2. Im ExtensionManager die Extension 'test' aktivieren
    3. Das statische Template 'test' (zusätzlich zu: 'Content elements (fluid_styled_content)') hinzufügen
    4. Das TS der Seite anpassen, minimal:

    1. page = PAGE
    2. page.10 < styles.content.get

    5. Der Seite einen Inhalt vom Typ 'Plugin' hinzufügen (Selected Plugin: 'Export')

    Beim Abschicken des AddFormulars (beim Ansprechpartner) habe ich in Ansprechpartner::addAction() einen var_dump eingebaut.
    Hier ist bei mir die behoerdeId immer empty.

    Was mache ich falsch?

    Die Datei kann hier: [url]https://www.dropbox.com/s/k1bcdkx8nzuszdm/test.zip?dl=0[/url] runtergeladen werden.

  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    10. 03. 2017, 10:16

    :D Ich habe den Fehler gefunden :D:D:D

    Das Selectfeld im Form muss so aussehen

    1. <f:form.select options="{behoerden}" property="behoerdeId" optionLabelField="bezeichnung" size="5" multiple="1" class="form-control" />

    Das ist alles!!

  • 1