[Frage] Child wird immer doppelt angelegt?! TYPO3-Version: 8.7.8

  • mbuchegger mbuchegge...
    Sternenflotten-Admiral
    0 x
    247 Beiträge
    0 Hilfreiche Beiträge
    28. 11. 2017, 14:24

    Hi Leute.

    Ich stehe gerade vor einem Rätsel.
    Ich will mir ein Child über FE erstellen - es geht um Gewinnspiele.

    Gewinnspiel->Teilnahme
    Das sind die Controller / Tabellen die es dazu gibt.

    Ich rufe also im Controller Teilnahme newAction auf und übergebe als argument Gewinnspiel.

    [code]/**
    * Die IP Adresse auslesen
    *
    * @return IP-Adresse
    */
    public function getIPAddress() {

    if(!empty($_SERVER['TYPO3_DB'])) {
    $ip=$_SERVER['HTTP_CLIENT_IP']; // Check ip from share internet
    } elseif(!empty($_SERVER[HTTP_X_FORWARDED_FOR])) {
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; //to check ip is pass from proxy
    } else {
    $ip=$_SERVER['REMOTE_ADDR'];
    }

    return $ip;
    }

    /**
    * Den aktuell angemeldeten User auslesen
    *
    * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
    */
    public function getCurrentUser() {
    if ($this->currentUser == NULL && $GLOBALS['TSFE']->fe_user->user['uid'] > 0) {
    $this->currentUser = $GLOBALS['TSFE']->fe_user->user;
    } else {
    $this->currenUser = null;
    }

    return $this->currentUser;
    }

    /**
    * action new
    *
    * @return void
    */
    public function newAction(
    \Musicalplanet\MpGewinnspiele\Domain\Model\Gewinnspiel $gewinnspiel,
    \Musicalplanet\MpGewinnspiele\Domain\Model\Teilnahme $newTeilnahme = NULL)
    {
    $this->view->assign('gewinnspiel', $gewinnspiel);
    $this->view->assign('newTeilnahme', $newTeilnahme);
    $this->view->assign('user', $this->getCurrentUser());
    $this->view->assign('ip', $this->getIPAddress());
    }
    [/code]

    Wo folgendes Formular liegt:
    [code]<f:form class="form-inline" action="create" enctype="multipart/form-data" name="newTeilnahme" object="{newTeilnahme}" arguments="{gewinnspiel:gewinnspiel}">
    <f:form.hidden property="pid" value="{gewinnspiel.pid}" />
    <f:form.hidden property="benutzer" value="{user.uid}" />
    <f:form.hidden property="ip" value="{ip}" />

    <div class="form-group">
    <label for="name">Name</label>
    <f:form.textfield property="name" value="{user.firstName} {user.lastName}" required="1" />
    </div>
    <div class="form-group">
    <label for="email">E-Mail</label>
    <f:form.textfield property="email" value="{user.email}" required="1" />
    </div>
    <div class="form-group">
    <label for="telefon">Telefon</label>
    <f:form.textfield property="telefon" value="{user.telephone}" />
    </div>
    <div class="form-group">
    <label for="bemerkung">Bemerkung</label>
    <f:form.textfield property="bemerkung" />
    </div>
    <div class="form-group">
    <label for="agb">AGB</label>
    <f:form.checkbox property="agb" value="1" />
    </div>

    <f:form.submit class="btn btn-default" value="Teilnehmen" />
    </f:form>
    [/code]

    Wird das also ausgelöst springen wir in die createAction:

    [code]/**
    * action create
    *
    * @param \Musicalplanet\MpGewinnspiele\Domain\Model\Teilnahme $newTeilnahme
    * @return void
    */
    public function createAction(
    \Musicalplanet\MpGewinnspiele\Domain\Model\Gewinnspiel $gewinnspiel,
    \Musicalplanet\MpGewinnspiele\Domain\Model\Teilnahme $newTeilnahme)
    {
    $gewinnspiel->addTeilnahme($newTeilnahme);

    $this->objectManager->get('Musicalplanet\\MpGewinnspiele\\Domain\\Repository\\GewinnspielRepository' )->update($gewinnspiel);

    $this->redirect('show','Gewinnspiele','MpGewinnspiele',array('gewinnspiel'=>$gewinnspiel));
    }
    [/code]

    Das klappt auch alles... Und es wird auch die Teilnahme erstellt. Allerdings gleich zwei mal...?
    Warum?!

    Hat dazu jemand eine Idee?

    Lg M.


  • 1
  • 1