Как использовать поток: field.multiRelation - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь получить отношение N: M с потоком.Итак, у меня есть объект с именем «Paket» с некоторыми атрибутами (название, цена,…).Затем я определил packageliste.html:

<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
     xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
     xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers"
     xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">

  <f:layout name="Content" />

  <f:section name="Configuration">
    <flux:form id="paketliste" >
      <flux:field.select name="settings.spalten" items="{0:{0:'2 Spalten',1:2},1:{0:'3 Spalten',1:3},2:{0:'4 Spalten',1:4}}" default="3" />
      <flux:field.multiRelation name="settings.pakete"
                                multiple="0"
                         size="10"
                         minItems="0"
                         maxItems="99"
                         table="tx_mbcomponents_domain_model_paket"
                         mm="tx_mbcomponents_domain_model_paketliste_paket_mm"
                         foreignField="paketliste"
                       transform="array<MbAECSoftware\\mbcomponents\\Domain\\Model\\Paket>"
                         >
        <flux:wizard.suggest/>
      </flux:field.multiRelation>
    </flux:form>
  </f:section>

  <f:section name="Preview" />

  <f:section name="Main">
    <h1>Paketliste</h1>
    <div>Anzahl Spalten: {settings.spalten}</div>
    <div>Anzahl Pakete: <f:count>{settings.pakete}</f:count> = {settings.pakete}</div>
    <div>Pakete: {settings.pakete}</div>
    <div>
      <f:for each="{settings.pakete}" as="obj" iteration="it">
        <p>OBJ-{it.index} = {obj}, {obj.titel} <f:format.currency currencySign="€" decimalSeparator="," thousandsSeparator="." prependCurrency="false">{obj.preis}</f:format.currency> <f:count>{obj.module}</f:count></p>
      </f:for>
    </div>
  </f:section>

</div>

В бэкэнде TYPO3 все вроде бы нормально, но при рендеринге во внешнем интерфейсе я получаю следующую ошибку:

Uncaught TYPO3 Exception
Argument 2 passed to TYPO3\CMS\Core\Database\Query\QueryBuilder::leftJoin() must be of the type string, null given, called in /mnt/web220/c1/11/5776011/htdocs/2018/typo3_src-8.7.19/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbQueryParser.php on line 905 

TypeError thrown in file
/mnt/web220/c1/11/5776011/htdocs/2018/typo3_src-8.7.19/typo3/sysext/core/Classes/Database/Query/QueryBuilder.php in line 570.

103 TYPO3\CMS\Core\Database\Query\QueryBuilder::leftJoin("tx_mbcomponents_domain_model_paket_modul_mm", NULL, NULL, "`tx_mbcomponents_domain_model_paket_modul_mm`.`uid_local` = ``.`uid`")

/mnt/web220/c1/11/5776011/htdocs/2018/typo3_src-8.7.19/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbQueryParser.php:
00903:             );
00904:         }
00905:         $this->queryBuilder->leftJoin($leftTableAlias, $rightTableName, $rightTableAlias, $joinConditionExpression);
00906:         if ($rightSource instanceof Qom\JoinInterface) {
00907:             $this->parseJoin($rightSource, $rightTableAlias);

Есть ли некоторыеидеи?Мы используем TYPO3 8.7 с FLUX 8.2.1.

...