# Auflistungsfilter, bei dem die Verfügbarkeit von Eigenschaftswerten von anderen ausgewählten Eigenschaftswerten abhängt

**URL:** <https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366>\
**Category:** Shopware 6 (German)\
**Tags:** general, administration, programming, other, offizielle-shopware-\
**Created:** [6. Februar 2023 um 10:09 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366 "2023-02-06T10:09:22Z")\
**Posts on this page:** 17\
**Page:** 2

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [24. Februar 2023 um 09:17 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/21 "2023-02-24T09:17:45Z")

</div>

Weiß jemand, wie ich die Loop {% for property in properties.entities %} durchlaufen kann, die nur einige bestimmte Eigenschaften und Optionen ausgibt?

Ich werde auch eine Kondition wie diese einrichten:

Wenn Value A 02 in currentFilter für Property A ist, dann sind Value B 01 und Value B 03 zur Auswahl für Property B verfügbar.

```auto
{% sw_extends '@Storefront/storefront/component/listing/filter-panel.html.twig' %}

{% block component_filter_panel_items %}

    {% block component_filter_panel_item_properties %}
        {% set properties = listing.aggregations.get('properties') %}

        {% if not properties.entities is empty %}
            {% for property in properties.entities %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}
        {% endif %}
	{% endblock %}

{% endblock %}

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [27. Februar 2023 um 16:16 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/22 "2023-02-27T16:16:02Z")

</div>

Ich versuche, den Filter nach Bedingung in der Twig-Vorlage zu ändern. Aber kann nicht machen es funktionieren, kann jemand Tipp vielleicht, was ich falsch mache? Hier der Code, den ich habe:

```auto
{% sw_extends '@Storefront/storefront/component/listing/filter-panel.html.twig' %}

{% block component_filter_panel_items %}

    {% block component_filter_panel_item_properties %}
        {% set properties = listing.aggregations.get('properties') %}
        {% set currentoptions = slot.data.listing.currentFilters.get('properties') %}        

        {% if not properties.entities is empty %}
            {% for property in properties.entities %}

                {% if currentoptions.entities == "c0d02d1738fd4293a489695787e06b5c" %}
                    test1 
                {% else %}

                    {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                        elements: property.options,
                        sidebar: sidebar,
                        name: 'properties',
                        displayName: property.translated.name,
                        displayType: property.displayType,
                        pluginSelector: 'filter-property-select',
                        propertyName: property.translated.name
                    } %}

                {% endif %}

            {% endfor %}
        {% endif %}
	{% endblock %}
    {{ dump(slot.data.listing.currentFilters) }}

{% endblock %}

```

Oder sollte ich diese Logik in Subscriber.php integrieren?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [27. Februar 2023 um 17:35 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/23 "2023-02-27T17:35:06Z")

</div>

> [@shopwarer1638](#):
>
> `currentoptions.entities`

Falls currentoptions ein array ist, dann iteriert man nicht mit currentoptions.entities du das array.

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [27. Februar 2023 um 21:24 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/24 "2023-02-27T21:24:35Z")

</div>

Danke Max\_Shop! Es funktioniert jetzt, aber wenn ich ‚without‘ twig filter benutze, dann bricht es mit einem Fehler ab: ‚Unknown „without“ filter.‘

Hier der Code, vielleicht kann jemand einen Tipp geben? Ich werde einige Optionen in Abhängigkeit von anderen Optionen mit ihm zu deaktivieren.

```auto
{% sw_extends '@Storefront/storefront/component/listing/filter-panel.html.twig' %}

{% block component_filter_panel_items %}
    {{ dump(listing.aggregations) }}

    {% block component_filter_panel_item_properties %}
        {% set properties = listing.aggregations.get('properties') %}

        {% if ( not properties.entities is empty ) and ( 'c0d02d1738fd4293a489695787e06b5c' ) in slot.data.listing.currentFilters.properties %}
            {% for property in properties.entities|without('a', 'b') %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}

        {% else %}

            {% for property in properties.entities %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}
        {% endif %}
	{% endblock %}

{% endblock %}

```

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [27. Februar 2023 um 21:41 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/25 "2023-02-27T21:41:17Z")

</div>

Es gibt keinen without filter in twig: [Documentation - Twig - The flexible, fast, and secure PHP template engine](https://twig.symfony.com/doc/3.x/)

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [27. Februar 2023 um 22:09 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/26 "2023-02-27T22:09:04Z")

</div>

Entschuldigung, dieser Filter ist von Drupal twig.

Vielleicht kennt jemand eine Möglichkeit, dies in Shopware zu implementieren? 🤓

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [28. Februar 2023 um 14:24 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/27 "2023-02-28T14:24:29Z")

</div>

Hier ein Update, aber es funktioniert nicht. Kann jemand einen Tipp für die Verwendung von „optionid“ im Loop |filter geben?

```auto
{% sw_extends '@Storefront/storefront/component/listing/filter-panel.html.twig' %}

{% block component_filter_panel_items %}
    {{ dump(listing.aggregations) }}
    {{ dump(listing.aggregations.elements.properties.entities.elements[0].options.elements) }}

    {% block component_filter_panel_item_properties %}
        {% set properties = listing.aggregations.get('properties') %}
        {% set optionid = listing.aggregations.elements.properties.entities.elements[0].options.elements('_uniqueIdentifier') %}

        {% if ( not properties.entities is empty ) and ( 'c0d02d1738fd4293a489695787e06b5c' ) in slot.data.listing.currentFilters.properties %}
            TEST
            {% for property in properties.entities|filter (optionid => optionid == "6189b900a31f436885e3210d1a19abe8") %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}

        {% else %}

            {% for property in properties.entities %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}
        {% endif %}
	{% endblock %}

{% endblock %}

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [28. Februar 2023 um 20:42 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/28 "2023-02-28T20:42:51Z")

</div>

oder ist es vielleicht möglich, hier Optionen auszuschließen, weiß das jemand?

```auto
                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    ...

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [7. März 2023 um 14:21 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/29 "2023-03-07T14:21:15Z")

</div>

Kann mir auch jemand einen Tipp geben, wie ich es implementieren sollte, damit die Kondition akzeptiert wird. Jetzt muss ich die Seite manuell neu laden, damit dies funktioniert:

```auto
{% if ( not properties.entities is empty ) and ( 'c0d02d1738fd4293a489695787e06b5c' in slot.data.listing.currentFilters.properties ) %}

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [8. März 2023 um 00:00 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/30 "2023-03-08T00:00:31Z")

</div>

Ich machte es funktionieren (obwohl der Code Optimierung benötigen, aber es funktioniert). Das einzige Frage, die ich jetzt habe, ist ich brauche, um die Seite (Im Webbrowser) manuell nach der Anwendung benutzerdefinierte Filterung (Ausblenden property.options abhängig von anderen property.options ausgewählt) neu zu laden.

Kann mir jemand einen Tipp zum Neuladen des Filters geben? Hier der Code:

```auto
{% sw_extends '@Storefront/storefront/component/listing/filter-panel.html.twig' %}

{% block component_filter_panel_items %}
    {#
    {{ dump(listing.aggregations.elements.properties.entities.elements[0].options.elements) }}
    #}

    {% block component_filter_panel_item_properties %}
        {% set properties = listing.aggregations.get('properties') %}

        {# Checking, if Prop A is selected #}

        {% if ( not properties.entities is empty ) and ( 'c0d02d1738fd4293a489695787e06b5c' in slot.data.listing.currentFilters.properties ) %}

            <p>CUSTOM FILTER ON</p>

            {% for property in properties.entities %}

                {# Filtering Props B #}

                {% set propertyoptionsA = property.options|filter((v, k) => k != "6189b900a31f436885e3210d1a19abe8" and k != "03ef7f5772924e5980a30c041dc92494" and k != "1ead635c607d47d8a3b59720b84be6e8" and k != "73f357184eba4c03a6c89a92990357a7" and k != "a7a3d5a4bad5463f92070b83b09df6eb" and k != "1a9c286cbeef4c16a782355fba2757b7" and k != "ca3b626c25ca4cd68289360bf405f7b2" and k != "478ed551d8d94fd38efc5cefdb1ade88" and k != "8133c4d61b1c40c4b8713b0fe2095fac" and k != "a499309dff6b48c7a15c022d709d8ac5" and k != "16b8a946e19b474d9f9c2242ea271d0c" and k != "dfeee618e74645759aa6c5b4184c24d8" and k != "4d895d3c9cea423dbd10c2adbf9260e8") %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: propertyoptionsA,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } only %}

            {% endfor %}

        {% else %}

            <p>CUSTOM FILTER OFF</p>
            
            {% for property in properties.entities %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}
        {% endif %}
	{% endblock %}

{% endblock %}

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [8. März 2023 um 18:43 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/31 "2023-03-08T18:43:01Z")

</div>

Ich denke, dass dieses custom twig Filter update über AJAX durchgeführt werden könnte. Kann jemand einen Tipp für Shopware 6 Lösung geben?

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [13. April 2023 um 00:15 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/32 "2023-04-13T00:15:08Z")

</div>

Für Filtermanipulationen möchte ich die verfügbaren Eigenschaften an Twig übergeben. Ich mache das über Subscriber. Ich konnte Products als Beispiel dafür in den Context setzen. Aber wie kann ich das mit Properties machen, kann mir jemand einen Tipp geben?

Sollte ich die Listing Aggreggations Extension dafür verwenden?

Hier der Code, den ich habe:

```auto
public function handleResult(ProductListingResultEvent $event)
{
    $array1 = $event->getResult()->getElements();

    $event->getContext()->assign($array1);

    $event->getContext()->addExtension('ContextExtension1', new ArrayEntity($array1));
}

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [18. April 2023 um 00:25 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/33 "2023-04-18T00:25:32Z")

</div>

Ich habe die Logik bisher in PHP erstellt und kann nun keine Eigenschaftsoptionen an die Twig übergeben.

{{ dump( context.context.extensions.Properties1ContextExtension ) }} result:

```auto
Shopware\Core\Framework\Struct\ArrayEntity {#16334 ▼
  #data: array:1105 [▼
    "001695276a734b7c9f4b60171e1de25f" => Shopware\Core\Content\Property\Aggregate\PropertyGroupOption\PropertyGroupOptionEntity {#9458 ▶}
    "0046b0fe5bde48b2b1a3d3ff6126bb10" => Shopware\Core\Content\Property\Aggregate\PropertyGroupOption\PropertyGroupOptionEntity {#9454 ▶}
etc..

```

Aber wie kann ich auf die Optionen zugreifen, damit ich sie (propertyoptionsA) im Filter verwenden kann?

```auto
{% block component_filter_panel_items %}
    {% block component_filter_panel_item_properties %}

        {% set properties = listing.aggregations.get('properties') %}

        {% if ( conditions ) %}

            {% for property in properties.entities %}

                {# Excluded in Subscriber Properties via extension #}
                {% set propertyoptionsA = context.context.extensions.Properties1ContextExtension. **???** %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: propertyoptionsA,
                    sidebar: sidebar,
                    name: 'properties',
                    displayName: property.translated.name,
                    displayType: property.displayType,
                    pluginSelector: 'filter-property-select',
                    propertyName: property.translated.name
                } %}

            {% endfor %}

        {% else %}
            
            {% for property in properties.entities %}

                {% sw_include '@Storefront/storefront/component/listing/filter/filter-property-select.html.twig' with {
                    elements: property.options,
                    sidebar: sidebar,
                    ..
                } %}

            {% endfor %}

        {% endif %}

    {% endblock %}
{% endblock %}

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [18. April 2023 um 11:15 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/34 "2023-04-18T11:15:35Z")

</div>

Vielleicht kann jemand aus dem Forum mit Optionen helfen?

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [18. April 2023 um 23:14 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/35 "2023-04-18T23:14:31Z")

</div>

OK, ich probiere jetzt, die neue Eigenschaftserweiterung von subscriber an twig zu übergeben:

```auto
$propertiesA = $aggregations->get('poperties');
$event->getCnotext()->addExtension('PropertiesAExtension', $propertiesA);

```

Kann mir bitte jemand einen Rat geben, wie ich mit einem Filter die Optionen ausschließen kann?

```auto
$criteria->addFilter(
    new NotFilter(
        NotFilter::CONNECTION_OR,
        [
            new ContainsFilter('name', 'Name1'),
            new ContainsFilter('name', 'Name2')
        ]
    )
);

```

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [19. April 2023 um 15:30 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/36 "2023-04-19T15:30:57Z")

</div>

Weiß jemand, wie man Filter zu getAggregations() in diesem Fall hinzufügen?

---

<div class="post-metadata">

**Author:** ![shopwarer1638](https://avatars.discourse-cdn.com/v4/letter/s/76d3ee/32.png) [@shopwarer1638](https://forum.shopware.com/u/shopwarer1638)\
**Post date:** [25. April 2023 um 16:27 UTC](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366/37 "2023-04-25T16:27:19Z")

</div>

@Max_Shop Können Sie vielleicht einen Tipp geben, wo ich die PHP-Logik des Eigenschaftsfilters zum Kopieren und Anpassen finden kann?

[Vorherige Seite](https://forum.shopware.com/t/auflistungsfilter-bei-dem-die-verfuegbarkeit-von-eigenschaftswerten-von-anderen-ausgewaehlten-eigenschaftswerten-abhaengt/98366.md?page=1)
