Contao-Camp 2024
Ergebnis 1 bis 2 von 2

Thema: Attribute Filtern // Backend Fehler // Isotope

  1. #1
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard Attribute Filtern // Backend Fehler // Isotope

    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.

  2. #2
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    keiner eine Idee?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •