---
title: "flexforms select mit itemsProcFunc"
url: "https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage"]
created: "2007-07-19"
last_reply: "2013-02-18"
replies: 4
solved: false
page: 1
pages: 1
lang: "de"
---

# flexforms select mit itemsProcFunc

Extensions › Entwicklung · 4 Antworten · gestartet 2007-07-19

## Eröffnungsbeitrag

**TW** · 2007-07-19 · [Beitrag #1](https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc/1)

Hallöchen ihr helfenden Geister ;)

folgendes:

Ich habe ein Flexform Feld, das seine Daten aus einer anderen DB - nicht TYPO3 Struktur enthält. Das ist alles auch kein Thema und funzt soweit auch tadellos.

Mein Problem ist, das das ganze nun für eine Mehrfachauswahl vorbereitet werden soll.
Kein Problem dachte ich mir:

Ausgangspunkt:

```typoscript
<reiseart>
<tceforms>
<label>LLL:EXT:tw_tourguide/locallang.xml:pi1_sheet_reiseart</label>
<config>
<type>select</type>
<itemsprocfunc>tx_twtourguide_pi2->addFieldsreiseart</itemsprocfunc>
</config>
</tceforms>
</reiseart>
```

Erweitert:

```typoscript
<reiseart>
<tceforms>
<label>LLL:EXT:tw_tourguide/locallang.xml:pi1_sheet_reiseart</label>
<config>
<type>select</type>
<multiple>1</multiple>
<size>10</size>
<maxitems>20</maxitems>
<autosizemax>10</autosizemax>
<allownonidvalues>1</allownonidvalues> <itemsprocfunc>tx_twtourguide_pi2->addFieldsreiseart</itemsprocfunc>
</config>
</tceforms>
</reiseart>
```

So damit bekomme ich nun zwei Felder wie wir es aus TYPO3 kennen. Eines links(leer) und eines rechts (mit den Daten). Durch klick auf die rechten Daten werden diese auf das linke Feld übernommen.

Alles kein Thema.
Speichere ich nun nach einer Mehrfachauswahl das Ganze ab, werden die betreffenden Ids korrekt in der Flexformsspalte des Datensatzes gespeichert, aber leider werden die nicht mit in das Objekt übernommen, so das ich nichts editieren kann.

Da herscht dann gähnende Leere

Wäre schön wenn mir da jemand helfen könnte.

cu

ps: leider ein doppelposting ;)
[Doppelpost](http://www.typo3forum.net/forum/extension-modifizieren-oder-neu-erstellen/22089-flexforms-selct-mit-itemsprocfunc.html#post68742)

## Antworten

### [#2](https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc/2) · mitchiru · 2007-08-14

da gibts einen bug request im typo3 bugtracker.

du must ein leeres item array angeben und den wert allowNonIdValues auf 1 stellen, dann gehts.

<http://bugs.typo3.org/view.php?id=2694>

### [#3](https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc/3) · dyne · 2007-10-24

Ich habe das gleiche Problem wie TW hatte.

Jetzt habe ich ein leeres item array meinem Flexform hinzugefügt:

```typoscript
<T3DataStructure>
	<sheets>
		<sDEF>
			<ROOT>
				<TCEforms>
					<sheetTitle>Welche Bilder sollen angezeigt werden?</sheetTitle>
				</TCEforms>
				<el>
					<dynField>
						<TCEforms>
							<config>
							<type>select</type>
							<multiple>1</multiple>
							<size>10</size>
							<maxitems>20</maxitems>
							<autosizemax>10</autosizemax>
							<items type="array"></items>
							<allownonidvalues>1</allownonidvalues>
							<itemsprocfunc>user_slideshow_pi1_flex->set_fields</itemsprocfunc>
							</config>
						</TCEforms>
					</dynField>
				</el>
			</ROOT>
		</sDEF>
	</sheets>
</T3DataStructure>
```

Trotzdem wird garnichts angezeigt. Meine set_fields()-Methode sieht so aus:

```php
function set_fields($config){
			$optionList = array(
				array("foo", 0),
				array("bar", 1),
			);
			$config['items'] = array_merge($config['items'],$optionList);
			return $config;
		}
```

Was mache ich falsch?

### [#4](https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc/4) · InforMedic · 2007-12-20

> **dyne schrieb:**
>
> Was mache ich falsch?

Hast du deine Funktion auch in ext_tables.php eingebunden?

```php
include_once(t3lib_extMgm::extPath($_EXTKEY).'pi2/class.tx_myext_pi2.php');
```

Ich habe meine Funktion z.B. in den Ordner pi2 gelegt und binde ihn darüber ein.

Meine flexform_ds.xml liste sieht so aus:

```html
<dbtable>
  <TCEforms>
    <label>LLL:EXT:myext/locallang_tca.xml:tx_myext.pi_flexform.dbtable</label>
    <config>
      <type>select</type>
      <multiple>1</multiple>
      <size>5</size>
      <maxitems>10</maxitems>
      <autosizemax>5</autosizemax>
      <allownonidvalues>1</allownonidvalues>
      <selectedListStyle>width:250px</selectedListStyle>
      <itemListStyle>width:250px</itemListStyle>
      <items type="array"></items>
      <itemsProcFunc>tx_myext_pi2->addFieldsToFlexForm</itemsProcFunc>
    </config>
  </TCEforms>
</dbtable>
```

Meine pi2-Funktion sieht wie folgt aus:

```php
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 2007 Ich <meine@email.de>
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

/**
 * Plugin 'BE Localization in FE Form' for the 'gp_belocalize_feform' extension.
 *
 * @author	Ich <meine@email.de>
 * @package	TYPO3
 * @subpackage	tx_myext
 */
class tx_myext_pi2 {
	var $prefixId = 'tx_myext_pi2'; // Same as class name
	var $scriptRelPath = 'pi2/class.tx_myext_pi2.php'; // Path to this script relative to the extension dir.
	var $extKey = 'myext'; // The extension key.

	function addFieldsToFlexForm ($config) {
		//debug($config, "config");
		$optionList = array();
		$extConfigArray = array();
		$TCA = $GLOBALS['TCA'];
		//debug($TCA, "TCA");
		// Load table config array (TCA)
		$i=0;
		while(list($table)=each($TCA)) {
			$table = strstr($table, 'tx_');
			if (isset($table)) $extConfigArray[$table] = $TCA[$table];
			if (isset($TCA[$table]['ctrl']['transOrigPointerField'])) {
				t3lib_div::loadTCA($table);
				$optionList[$i] = array(0 => $table, 1 => $table);
			}
			$i++;
		}
		//debug($extConfigArray, "extConfigArr");
		$config['items'] = array_merge($config['items'], $optionList);
		//debug($config, "config");
		return $config;
	}

}

if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/gp_belocalize_feform/pi2/class.tx_gpbelocalizefeform_pi2.php'])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/gp_belocalize_feform/pi2/class.tx_gpbelocalizefeform_pi2.php']);
}

?>
```

Diese Funktion liest sämtlich datenbank-Tabellennamen beginnend mit "tx_" aus und listet diese zur Auswahl in einer multiple selectable selectbox.

vielleicht stimmt bei dir was mit der option list nicht, debugge die dochmal und schaue ob da auch wirklich "key=>value" pairs enthalten sind.

Ein gutes Beispiel ist unter: <http://wiki.typo3.org/index.php/Extension_Development,_using_Flexforms#Dynamic_Data_in_Flexforms> zu finden.

Da bei mir anfangs auch noch nichts angezeigt wurde, habe ich einfach mal das hier:

```php
$optionList = array();
   // add first option
   $optionList[0] = array(0 => 'option1', 1 => 'value1');
   // add second option
   $optionList[1] = array(0 => 'option2', 1 => 'value2');
   $config['items'] = array_merge($config['items'],$optionList);
   return $config;
```

anstelle meiner php funktion verwendet. Das hat mir dann die 2 Optionen angezeigt. Anschliessend habe ich meinen Code an diesen angepasst und es lief.

Das die Daten dann auch gespeichert bleiben, musste ich wie "mitchiru" gepostet hat, dieses leere ItemArray angeben und die option "<allownonidvalues>1</allownonidvalues>" setzen.

Grüße
Info

### [#5](https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc/5) · Cheeky · 2013-02-18

Hallo,

ich habe dasselbe Problem allerdings in Kombination mit einem requestUpdate nach Auswahl in einem anderen Multiselect. allownonidvalues und leeres items-Array hat bei mir nicht funktioniert. Ich verwende auch kein flexform, sondern TCA Konfiguration.

Ich lade anhand der Auswahl  in einem Multiselect die Werte in ein anderes Multiselect (via requestUpdate). Das Nachladen holt sich aus der Datenbank Datensätze. Die Werte scheinen im 2. Multiselect nach Auswahl im 1. Multiselect auch korrekt auf, allerdings funktioniert die Anzeige der gespeicherten Werte nicht. Das trifft allerdings nur für die Werte zu, die ich via itemsprocfunc zusätzlich hinzugefügt habe. Alle Werte, die vorher schon vorhanden waren, können auch gespeichert und angezeigt werden.

An den Werten sollte es nicht liegen, weil es auch mit der hier geposteten function set_fields() nicht funktioniert hat.

Bitte um Hilfe... ich steh wirklich an.

lg, cheeky

---

Quelle: „flexforms select mit itemsProcFunc“, typo3.net, https://www.typo3.net/d/65498-flexforms-select-mit-itemsprocfunc
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
