[TYPO3-german] Extbase - Flexform - / Typoscript-Settings

bernd wilke t3ng at bernd-wilke.net
Wed Oct 22 17:04:46 CEST 2014


Am 22.10.14 15:35, schrieb JCL - Johannes C. Laxander:
>> ich würde mal spontan darauf tippen, das das $settings-Array
>> so nicht ausgelesen werden kann.
>> Hast Du mal versucht, ob ein einzelner Wert aus $settings
>> erkannt wird, also z.B. $settings['settingX']?
>
>
> So, ich habe getestet. Meine Erkenntnisse sind jetzt:
>
> Wenn ich einen einzelnen Wert übergebe, hier ein Setting aus TypoScript,
>
> $cruises = $this->cruiseRepository->findBySelectedCriteria($this->settings['cruise']['select']['bookingStatus']);
>
> tritt der Fehler nicht auf, genau so, wie wenn ich nur die Flexform-Settings so übergebe:
>
> $cruises = $this->cruiseRepository->findBySelectedCriteria($this->settings);
>
> Erst wenn ich Flexform-Settings und TypoScript-Setting mische, fliegt mir "foreach($item as $key => $value)" um die Ohren. Anscheinend werden die TypoScript-Settings anders dargestellt / übergeben. Wer kann dazu was sagen??? Hier noch einmal mein Problem in der Gesamtheit:
>
> Ich übergebe mit der Repository-Methode im Controller Flexform-Settings:
>
> class CruiseController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
>    ...
>    public function listAction() {
>      $cruises = $this->cruiseRepository->findBySelectedCriteria($this->settings);
>      ...
>    }
> }
>
> class CruiseRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
>    public function findBySelectedCriteria($settings) {
>      ...
>      foreach ($settings as $item) {             <----- Zeile 66
>        foreach($item as $key => $value) {
>          ...
> 	}
>      }
>    }
> }
>
> Das funktioniert. Nun habe ich zusätzlich noch TypoScript-Settings:
>
> plugin.tx_sccruiseplan {
>    settings {
>      settingX = abc
>    }
> }
>
> Nach dieser Definition im Extension-Setup funktioniert aber die Repository-Methode nicht mehr. Ich bekomme jetzt den Fehler:
>
> #1: PHP Warning: Invalid argument supplied for foreach() in /.../Classes/Domain/Repository/CruiseRepository.php line 66
>
> Welche Erklärung gibt es dafür und wie behebe ich dieses Problem?

ich würde vermuten, dass deine Settings unterschiedlich tief 
geschachtelt sind und daher auf einer Ebene kein Array wie erwartet 
vorhanden ist.
mach doch mal einen var_dump von $settings für die verschiedenen 
Konfigurationen (flexform/TS/flexform+TS)

bernd
-- 
http://www.pi-phi.de/cheatsheet.html


More information about the TYPO3-german mailing list