Also ich denke, ich habe jetzt die sauberste (mir bekannte) Lösung gefunden. 
Alternativ-Vorschläge willkommen.

 Anbei ein vereinfachtes Beispiel:
---
class ExampleController extends 
\TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

        /**
         * @var \TYPO3\CMS\Extbase\Property\PropertyMapper
         * @inject
         */
        protected $propertyMapper;

        /**
         * @var \Vendor\Extension\Domain\Repository\AnotherObjectRepository
         * @inject
         */
        protected $anotherObjectRepository = NULL;

        /**a
         * Handle the form
         *
         * @param \Vendor\Extension\Domain\Model\FormData $formData
         * @return void
         */
        public function 
enterContestAction(\Vendor\Extension\Domain\Model\FormData $formData = NULL) {
                /** @var \Vendor\Extension\Domain\Model\AnotherObject 
$anotherObject */
                $anotherObject = $this->anotherObjectRepository->findByUid(1);
                
                $formData = $this->propertyMapper->convert(
                        array(
                                'anotherObject' => $anotherObject,
                                'forename' => 'Tester',
                        ),
                        'Vendor\\Extension\\Domain\\Model\\FormData'
                );
                
                $this->view->assign('formData', $formData);
        }

}

-----Ursprüngliche Nachricht-----
Von: typo3-german-boun...@lists.typo3.org 
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von David Gurk
Gesendet: Donnerstag, 22. Oktober 2015 15:04
An: typo3-german@lists.typo3.org
Betreff: [TYPO3-german] Extbase Formular mit default-Werten belegen

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;
                }

}
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an