[TYPO3-german] Extbase Formular mit default-Werten belegen

David Gurk dgurk at medienwerft.de
Thu Oct 22 15:04:20 CEST 2015


Gibt es eine Möglichkeit Standard-Werte für die Formular-Daten innerhalb von Extbase im Controller zu definieren?

Unten anbei ein Beispiel-Aufbau.

Leider ist es ja so, dass beim ersten Aufruf von enterFormDataAction() die Variable $formData noch nicht existiert, sondern erst, wenn das Model komplett validiert ist.

Leider kann ich $formData nicht einfach so vorab anreichern:
$anotherObject = $this->anotherObjectRepository->findByUid(1);
$formData->setAnotherObject(anotherObject);
$formData->setForename('Tester');

Hat jemand einen Tipp für mich?

Danke und viele Grüße

David

---

Im Controller habe ich die Action für das Formular:

/**
* Handle the form for entering the contest
*
* @param \Vendor\Extension\Domain\Model\FormData $formData
* @return void
*/
public function enterFormDataAction(\\Vendor\Extension\Domain\Model\FormData $formData = NULL) {
                // Hier dachte ich an etwas ähnliches wie dieses:
                // $anotherObject = $this->anotherObjectRepository->findByUid(1);
                // $formData->setAnotherObject(anotherObject);

                $this->view->assign('formData', $formData);
}

---

Hier mal reduziert das Template:
<f:form method="post" noCacheHash="1" object="{formData}" objectName="formData">
                <f:form.hidden property="anotherObject" />

                <label for="{formName}-forename" class="control-label"><f:translate key="form.fields.forename" /></label>
                <div class="{own:form.hasErrors(property: 'forename', then: ' has-error')}">
                               <f:form.textfield property="forename" type="text" id="{formName}-forename" class="form-control" />
                </div>
</f:form>

---

Das Model dazu sieht reduziert so aus:

<?php
namespace Vendor\Extension\Domain\Model;


class FormData extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {

                /**
                * pid
                *
                * @var int
                */
                protected $pid = 15;

                /**
                * calendar door
                *
                * @var \Vendor\Extension\Domain\Model\AnotherObject
                * @validate NotEmpty
                */
                protected $anotherObject = NULL;

                /**
                * forename
                *
                * @var string
                * @validate NotEmpty, StringLength(maximum=255)
                */
                protected $forename = '';

                /**
                * Returns the anotherObject
                *
                * @return \Vendor\Extension\Domain\Model\AnotherObject $anotherObject
                */
                public function getAnotherObject() {
                               return $this->anotherObject;
                }

                /**
                * Sets the anotherObject
                *
                * @param \Vendor\Extension\Domain\Model\AnotherObject $anotherObject
                * @return void
                */
                public function setAnotherObject(\Vendor\Extension\Domain\Model\AnotherObject $anotherObject) {
                               $this->anotherObject = $calendarDoor;
                }

                /**
                * @return string $forename
                */
                public function getForename() {
                               return $this->forename;
                }

                /**
                * @param string $forename
                * @return void
                */
                public function setForename($forename) {
                               $this->forename = $forename;
                }

}


More information about the TYPO3-german mailing list