Ankündigung

Einklappen
Keine Ankündigung bisher.

CC Kindtabellen mit UND in Template filtern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • CC Kindtabellen mit UND in Template filtern

    Moin Tim,

    in einem Ausgabetemplate für das Eltern-Modul habe ich die Ausgabe der relevanten Kinddatensätze direkt eingebunden:
    PHP-Code:
    <?php
    $objChildCC 
    = \PCT\CustomElements\Plugins\CustomCatalog\Core\CustomCatalogFactory::findByTableName('cc_product_variants');
    $objChildCC->setLayoutTemplate('customcatalog_product_list');
    ?>
    <?php
    $objChildFilter 
    = new \PCT\CustomElements\Filters\SimpleFilter();
    $options = array (
    'column' => 'pid',
    'operation' => '=',
    'value' => $entry->id,
    );
    $objChildFilter->setOptions($options);
    $objChildCC->addFilter($objChildFilter);
    //echo $entry->id;
    echo $objChildCC->render();
    ?>
    Soweit so gut.
    Nun werden mir nach diesem Muster alle Kinddatensätze zum jeweiligen Elterndatensatz angezeigt. Ich möchte/muss die jeweiligen Kinddatensätze aber noch weiter filtern.

    Ich bräuchte also entweder eine Möglichkeit, diese Filterdefinition hier im Template um eine zusätzliche UND Bedingung zu erweitern
    oder
    ich kann hier im Template eine im CC bereits angelegte Filter-Sammlung direkt ansprechen? Ein einfaches
    HTML-Code:
    $objChildCC->addFilter('MeineFilterSammlung')
    hat es noch nicht gebracht.

    Verstehst Du was ich suche? Danke Dir und VG
    Zuletzt geändert von Brubbel; 28.03.2024, 13:40.

  • #2
    Du kannst weitere Filter ergänzen mit addFilter und auch komplexere Filter-Bedingungen nutzen über den 'where' Schlüssel.

    Code:
    $options = array (
    'column' => 'id',
    'where' => '###mein SQL###'
    );
    Schau dir mal den CustomSql Filter an. Der macht es vor.
    pct_customelements_plugin_customcatalog/PCT/CustomElements/Filters/CustomSql/CustomSql.php
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Super, das sieht genau nach dem aus was ich brauche ... Aber ... ich bekomme nicht mal das obige Beispiel mit dem CustomSQL Filter nachgestellt

      PHP-Code:
      <?php
      $objChildFilter 
      = new \PCT\CustomElements\Filters\CustomSql();
      $options = array (
      'where' => 'pid = 1 AND id = 4',
      );
      Diese "where" Daten liefern bei einer direkten DB Abfrage ein richtiges Ergebnis.
      Wie müsste ich das angeben?

      Hier knallt die Fehlerseite rein. Im Log steht was von

      Code:
      [2024-03-28T14:44:46.163725+01:00] request.CRITICAL: Uncaught PHP Exception Error: "Call to a member function replaceInsertTags() on null" at /var/www/clients/client4/web38/web/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Filters/CustomSql/CustomSql.php line 49 {"exception":"[object] (Error(code: 0): Call to a member function replaceInsertTags() on null at /var/www/clients/client4/web38/web/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Filters/CustomSql/CustomSql.php:49)"} []

      Kommentar


      • #4
        Zitat von Brubbel Beitrag anzeigen
        Super, das sieht genau nach dem aus was ich brauche ... Aber ... ich bekomme nicht mal das obige Beispiel mit dem CustomSQL Filter nachgestellt

        PHP-Code:
        <?php
        $objChildFilter 
        = new \PCT\CustomElements\Filters\CustomSql();
        $options = array (
        'where' => 'pid = 1 AND id = 4',
        );
        Diese "where" Daten liefern bei einer direkten DB Abfrage ein richtiges Ergebnis.
        Wie müsste ich das angeben?

        Hier knallt die Fehlerseite rein. Im Log steht was von

        Code:
        [2024-03-28T14:44:46.163725+01:00] request.CRITICAL: Uncaught PHP Exception Error: "Call to a member function replaceInsertTags() on null" at /var/www/clients/client4/web38/web/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Filters/CustomSql/CustomSql.php line 49 {"exception":"[object] (Error(code: 0): Call to a member function replaceInsertTags() on null at /var/www/clients/client4/web38/web/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Filters/CustomSql/CustomSql.php:49)"} []
        Naja, der CustomSQL Filter macht es vor wie man den options array mit "where" ausführt. Schaust du in den Quellcode sieht man, dass der Filter sich aus dem "customsql" Feld bedient. Quasi als wäre es ein im Backend angelegter Datensatz mit dem "customsql" Feld gefüllt.

        Setz den options Array einfach für einen SimpleFilter ein oder fülle das "customsql" Feld/Parameter im CustomSQL Objekt / Model

        Willst du den SQL Filter nutzen, musst du den Parameter OOP setzen.

        $objSqlFilter = new \PCT\CustomElements\Filters\CustomSql();
        $objSqlFilter->customsql = "'pid = 1 AND id = 4'";
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Danke Dir noch für Deine Hilfe. Ich hatte es vor dem Urlaub noch schnell mit addFilter gemacht. Funktionierte. Das mit dem CustomSQL werde ich noch ausprobiere aber ich sehe was nicht beachtet habe, danke!!

          Kommentar

          Lädt...
          X