[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