Guten Tag,
Da auf einer Installation mehrere Kunden liegen, möchte ich bei einer Variante (select) im Isotope nur bestimmte daten ausgeben.
Das Attribute heisst Zimmer. Früher haben wir mit foreign key (tl_bb_zi.name) gearbeitet. jetzt sollen aber nur noch die Werte ausgebene werden die den richtigen Wert beim Feld kunde eingeben haben. Also praktisch
Code:
SELECT
*
FROM
tl_bb_zi
WHERE published=1 AND kunde ='".$this->User->kunde."'"
Nach meinen Recherchen kann ich mit foreign key keine filterungen machen, richtig?
Eine (schon etwas ältere) Lösung habe ich bei (ich glaube) Github gefunden. Leider wirft diese ein paar Probleme aus. (Kann sein, dass diese nicht mit der aktuellen Isoptope Version kompatibel ist)
Der Code:
Code:
Eigenes Modul -> DCA -> tl_iso_product
<?php
$GLOBALS['TL_DCA']['tl_iso_product']['fields']['zimmerkategorie']['options_callback'] = array('tl_bb_att1','bb_select_season');
class tl_bb_att1 extends Backend
{
public function __construct()
{
parent::__construct();
$this->import('BackendUser', 'User');
}
public function bb_select_season()
{
if($this->User->isAdmin){
$season = Database::getInstance()->query("SELECT
*
FROM
tl_bb_zi
WHERE published=1");
$season_arr = $season->fetchAllAssoc();
// $season_ausgabe[] = '';
foreach($season_arr as $season){
$season_ausgabe[$season['id']] = $season['name'];
}
}else{
$season = Database::getInstance()->query("SELECT
*
FROM
tl_bb_zi
WHERE published=1 AND kunde ='".$this->User->kunde."'");
$season_arr = $season->fetchAllAssoc();
// $season_ausgabe[] = '';
foreach($season_arr as $season){
$season_ausgabe[$season['id']] = $season['name'];
}
}
return $season_ausgabe;
}
}
Problem 1: Im backend kommt manchmal an verschiedenen Stellen diese Warnung - die Klasse liegt aber nur in der einen Datei:
Code:
Compile Error: Cannot declare class tl_bb_att1, because the name is already in use
Problem 2:
Wenn ich jetzt Varianten auswähle und die Zimmer wähle erscheint im Frontend ein leeres Select Feld. (Ohne diesen Callback funktioniert es wie gehabt) - in der Datenbank sehen aber beide herangehensweisen gleich aus.
Was mache ich hier falsch bzw gibt es einen besseren aktuelleren Wert wie ich die Attribute Filtern kann. Kunde A soll die Zimmer von Kunde B natürlich nicht zur Auswahl haben.
Lesezeichen