TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

Zugriff auf den Wert aus einem FCE


Autor Nachricht
Verfasst am: 04. 08. 2009 [17:54]
maxB
Themenersteller
Dabei seit: 02.01.2006
Beiträge: 49
Moin an alle Leser/innen,

nachdem ich mittlerweile einige Stunden rumprobiert habe, weil ich unbedingt selbst den Knackpunkt finden wollte, wende ich mich nun hoffnungsvoll an die Benutzer von typo3.net icon_smile.gif

Es geht um (m)eine (erste) winzige Extension, die folgendes erledigen soll: In einer Datenbank existieren tausende von Einträgen, die Kraftfahrzeuge mit Details zu Marke, Modell, Treibstoff, Türen etc. enthalten. Um eine URL für den Redakteur möglichst komfortabel bilden zu lassen, sollen aus dieser DB sowohl alle Marken als auch alle Modelle (in Abhängigkeit von der zuvor gewählten Marke) ausgewählt werden können - später wird damit eine URL zu einem Neuwagen-Konfigurator gebildet.

Ich kann ohne Probleme die Datenbank auslesen und die Einträge in zwei Dropdowns in einem Flexible Content Element schreiben lassen. Allerdings fehlt mir die Abhängigkeit des Modells zur Marke. Ich muss also irgendwie abfragen, welche Marke zuvor gewählt wurde, um mir eben ausschließlich die zusammenhängenden Modelle ausgeben zu lassen.

Folgendes habe ich zur Zeit (TYPO3 4.2.8, aktuelle PHP- & MySQL-Version, falls das interessiert icon_smile.gif):

class.tx_mbccdataimport_pi1.php
PHP
function addBrands($config) {
		$optionList = array();
		$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery('manufacturer', 'cc_car_data', '', 'manufacturer', '', '');
		$i=1;
		while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
			$optionList[$i] = array(0 => $row['manufacturer'], 1 => $row['manufacturer']);
			$i++;
		}
		$config['items'] = array_merge($config['items'],$optionList);
		return $config;
	}
 
 
	function addModels($config) {
		$optionList = array();
		$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
			'model',
			'cc_car_data',
			'manufacturer = "BMW"', // HIER MUSS DAS BMW ALSO DYNAMISCH SEIN UND AUS DEM ERGEBNIS DER METHODE ADDBRANDS KOMMEN
			'model',
			'',
			''
		);
		$i=1;
		while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
			$optionList[$i] = array(0 => $row['model'], 1 => $row['model']);
			$i++;
		}
		$config['items'] = array_merge($config['items'],$optionList);
		return $config;
	}


XML des betroffenen FCE
HTML
<field_cc_brand type="array">
				<type>no_map</type>
				<tx_templavoila type="array">
					<title>Direkteinstieg - Marke</title>
					<sample_data type="array">
						<numindex index="0"></numindex>
					</sample_data>
					<etype>select</etype>
				</tx_templavoila>
				<tceforms type="array">
					<config type="array">						
                        <type>select</type>
                        <items type="array">
                        	<numindex index="0" type="array">
								<numindex index="0"></numindex>
								<numindex index="1"></numindex>
							</numindex>
                        </items>
                        <default>0</default>
                        <itemsprocfunc>tx_mbccdataimport_pi1->addBrands</itemsprocfunc>
					</config>
                    <onchange>reload</onchange>
					<label>Direkteinstieg - Marke</label>
				</tceforms>
			</field_cc_brand>
            <field_cc_model type="array">
				<type>no_map</type>
				<tx_templavoila type="array">
					<title>Direkteinstieg - Modell</title>
					<sample_data type="array">
						<numindex index="0"></numindex>
					</sample_data>
					<etype>select</etype>
				</tx_templavoila>
				<tceforms type="array">
					<config type="array">						
                        <type>select</type>
                        <items type="array">
                        	<numindex index="0" type="array">
								<numindex index="0"></numindex>
								<numindex index="1"></numindex>
							</numindex>
                        </items>
                        <default>0</default>
                        <itemsprocfunc>tx_mbccdataimport_pi1->addModels</itemsprocfunc>
					</config>
					<label>Direkteinstieg - Modell</label>
				</tceforms>
			</field_cc_model>


Ich wäre für jeden Ansatz und jede Hilfe äußerst dankbar icon_smile.gif
Max[/HTML][/PHP]
ProfilICQ
Verfasst am: 13. 08. 2009 [11:40]
BlackPixel
Dabei seit: 22.04.2005
Beiträge: 193
Naja, ich wkann mir denken was du möchtest. Ich würde das so erledigen:

Beim laden der Seite wird das erste Dropdown ausgefüllt angezeigt. Auf die options im Select legst Du ein onclick event. Wird ein option angeklickt wird ein ajaxrequest an eine registrierte eID Datei gestellt. Da wird die uid des Datensatzes übergeben. In der klasse für Dein ajax machst du dann lediglich eine DB abfrage mit der uid die übergeben wurde und schreibst alle kommenden options in das zweite select...

Gruß manfred
Profil