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 🙂
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 🙂):
class.tx_mbccdataimport_pi1.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
<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 🙂
Max