Bei der Implementierung ist mir dann noch klar geworden, dass die Lösung mit der Modifikation der 'tl_module' zwar funktioniert, aber natürlich nicht Multiuser-fähig ist :-).
Also habe ich dann doch eine Session-Variable erfunden, die vom Formular im processFormData-Hook gesetzt wird.
Zusätzlich gibt es im Suchformular ein verstecktes Feld, wo ich die ID der betreffenden Auflistung definieren kann. Leider musste ich dann auch das Listingmodul direkt modifizieren. Im destructor() lasse ich zusätzlich die Session-Variablen wieder zurücksetzen, damit die nächste Suche wieder den richtigen Startpunkt hat.
Code:
class myFormCheck extends Frontend
{
/**
* eigene Pruefung f. Abschicken d. Formulars per Hook 'processFormData'
*/
public function myProcessFormData($arrPost, $arrForm, $arrFiles)
{
// Suche
if ($arrForm['formID'] == 1710)
{
// Module Parameter anpassen
self::ModMyMod($arrPost, $arrForm, $arrFiles);
}
// Module Parameter anpassen
public function ModMyMod($arrPost, $arrForm, $arrFiles)
{
// SQL Query Parameter f. Listing
$_SESSION['LISTING']['list_where'] = "(user_plz" . "=" . $arrPost['user_postcode'] . ")";
// ID des betreffenden Moduls 'Auflistung'
$_SESSION['LISTING']['list_id'] = $arrPost['listing_id'];
}
und noch im "ModuleListing.php":
Code:
function __destruct()
{
if ($_SESSION['LISTING']['list_id'] == $this->id)
{
$_SESSION['LISTING']['list_where'] = '';
}
}
in der generate() Methode:
Code:
// Listing aus einem Formular triggern (Suchkriterien)
if ($_SESSION['LISTING']['list_where'] != '')
{
if ($_SESSION['LISTING']['list_id'] == $this->id)
{
$this->list_where = $_SESSION['LISTING']['list_where'];
}
}
Leider ist das Ganze zwar recht einfach gelöst, aber eben nicht "Updatesicher", doch da finde ich vielleicht noch eine Möglichkeit.
Lesezeichen