[TYPO3-german] (TYPO3-german) FAL mit TYPO3 6.1
Cedric Ziel
cedric at cedric-ziel.com
Tue Dec 10 09:57:15 CET 2013
Schau dir mal die Media Extension an, da ist es recht exemplarisch
gelöst:
https://git.typo3.org/TYPO3v4/Extensions/media.git/blob/HEAD:/Classes/Controller/Backend/AssetController.php#l219
Am Mo, 9. Dez, 2013 um 1:03 schrieb Harald Keller
<hkeller at einfallsreich.ch>:
> Folgendes habe ich schon gemacht:
>
> -Die Extension wurde zuerst mit dem Extension_builder erstellt
> -es soill ein Objekt "Darlehen erzeugt werden
> -dort hat es eine relation zum "Beantrager" der vom fe_users
> -kommt, dieser soll dabei eben eine Datei mit hochladen knnen.
> -Bis auf denn Dateiupload klappt alles, im Backend klappt auch alles.
>
> Das Model :
>
> class Beantrager extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
>
> ...der soll nun seinen "lohnausweis" hochladen knnen,
> das Feld im Model Beantrager sieht so aus:
> ------------------------------------------
>
> /**
> * lohnausweis
> * @var
> \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
> */
> protected $lohnausweis;
>
> auch in diesem Model die "getter" und "setter", wobei es mir vor
> allem auf das "hochladen" der Datei geht,
> in diesem Projekt muss die Datei nur im Backend runtergeladen werden
> knnen, nie im Frontend.
>
> Also die Getter und Setter im Model des Beantrager:
> ---------------------------------------------------
> /**
> * Returns the lohnausweis
> * @return
> \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
> $lohnausweis
> */
> public function getLohnausweis() {
> return $this->lohnausweis;
> }
>
> /**
> * sets the lohnausweis
> * @param
> \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
> $lohnausweis
> * @return void
> */
> public function setLohnausweis($lohnausweis) {
> $this->lohnausweis = $lohnausweis;
> }
>
>
> Dann die Anpassung im TCA, damit klappt es im Backend schonmal mit
> Dateiupload:
> --------------------------------------------------------------------------------
> 'lohnausweis' => array(
> 'config' =>
> \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
> 'file',
> array(
> 'appearance' => array(
> 'createNewRelationLinkTitle' =>
> 'LLL:EXT:cms/locallang_ttc.xlf:media.addFileReference',
> 'collapseAll' => TRUE,
> ),
> 'maxitems' => 2,
> 'minitems' => 0
> ),
> 'doc,pdf'
> )
> ),
>
>
> Im Fluid Template:
> --------------------
> <f:form action="create" name="newDarlehen" object="{newDarlehen}"
> enctype="multipart/form-data">
> <f:form.upload property="beantragerDaten.lohnausweis" />
>
> Das Mapping:
> -----------
>
> plugin.tx_extensionname{
> persistence {
> classes {
> \TYPO3\Extensionname\Domain\Model\Beantrager{
> mapping {
> tableName = fe_users
> recordType = tx_extensionname_domain_model_beantrager
> columns {
> lohnausweis.mapOnProperty = lohnausweis
> }
> }
> }
> }
> }
> }
>
> Im Controller wo das neue Objekt "Darlehen" erstellt wird:
>
> if ($this->arguments->hasArgument('newDarlehen')) {
> $mvcPropertyMappingConfiguration =
> \TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationBuilder::build('TYPO3\\CMS\\Extbase\\Mvc\\Controller\\MvcPropertyMappingConfiguration');
> $this->arguments->getArgument('newDarlehen')->injectPropertyMappingConfiguration($mvcPropertyMappingConfiguration);
> $propertyMappingConfiguration =
> $this->arguments->getArgument('newDarlehen')->getPropertyMappingConfiguration();
>
> $propertyMappingConfiguration->forProperty('*')->allowAllProperties();
> $propertyMappingConfiguration->forProperty('*')->allowCreationForSubProperty('*');
> $propertyMappingConfiguration->forProperty('*')->forProperty('*')->allowAllProperties();
>
> $propertyMappingConfiguration->allowProperties('*') ;
>
> $this->arguments['newDarlehen']->getPropertyMappingConfiguration()->allowCreationForSubProperty('*');
> $this->arguments['newDarlehen']->getPropertyMappingConfiguration()->allowModificationForSubProperty('*');
> }
>
>
>
> Wenn ich mit diesen Einstellungen das Objekt erzeugen mchte bekomme
> ich die Fehlermeldung:
> 1297759968: Exception while property mapping at property path
> "beantragerDaten.lohnausweis.name":
> The identity property "Anleitung_HDClone_DE.pdf" is no UID.
>
> mache ich dann noch folgendes in denn Cotroller des Darlehen :
>
>
> $this->arguments->getArgument('newDarlehen')->getPropertyMappingConfiguration()->setTargetTypeForSubProperty('beantragerDaten.lohnausweis',
> 'array');
>
> bekomme ich diese Fehlermeldung auf der ich nicht mehr wegkomme:
>
> 602160: Operand should contain 1 column(s): UPDATE fe_users SET
> username='testuser', kinderbetruung='', s
> chulkosten='',
> lohnausweis=('Anleitung_HDClone_DE.pdf','application/pdf','/tmp/phpssQwcB','0','1455613'),
> middle_name='', lockToDomain=''
> tx_extbase_type='Tx_Extensionname_Beantrager' WHERE uid='550'
>
> Versuche nun schon seit Tagen eine Lsung zu finden, und wre wirklich
> fr jden Tipp sehr Dankbar.
> Falls jemand das genau ansehen mchte wrde ich sofort einen Zugang
> einrichten.
>
> herzliche Grsse
> Harald
>
>
> --------------= Posted using GrabIt =----------------
> ------= Binary Usenet downloading made easy =---------
> -= Get GrabIt for free from http://www.shemes.com/ =-
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
More information about the TYPO3-german
mailing list