[1590 Aufrufe]

5.7 Hooks: config

In diesem Abschnitt beschäftigen wir uns mit den Hooks für die Konfiguration.

Hook: getAttributesFromDca

Der getAttributesFromDca Hook wird aufgerufen, wenn Attribute eines Widgets aud dem Data Contaiern Array ausgelesen werden.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: getAttributesFromDca, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(array $attributes, $context = null): array
    {
        // Modify $attributes here ... 

        return $attributes
    }
}

Parameter:

Parameter Typ Beschreibung
$attributes array Array mit den Attributen aus dem DCA
$context \Contao\DataContainer|\Contao\Module|null Instanz des DataContaiers, des Moduls oder null

Rückgabewert:

Typ Beschreibung
array Das überarbeitet Array mit den Attributen

Referenz im Contao Core: \Contao\Widget#L1407-L1414

Hook: getCountries

Dieser Hook ist veraltet und kann unter Contao 5 nicht mehr verwendet werden! Unter Contao 5 gibt es stattdessen den Contao\CoreBundle\Intl\Countries Service.

Der getCountries Hook wird aufgerufen, wenn die Liste der Länder geladen wird. Er erlaubt das Verändern der Liste.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: getCountries, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(array &$translatedCountries, array $allCountries): void
    {
        // Codes for the european countries
        $europeanCountryCodes = ['de', 'at', 'ch' /*, ... */];

        // Remove all non-european countries
        $translatedCountries = array_intersect_key($translatedCountries, array_flip($europeanCountryCodes));
    }
}

Parameter:

Parameter Typ Beschreibung
translatedCountries array Array mit den Ländern
$allCountries array Array mit allen Ländern aus countries.php

Rückgabewert:

Keiner, da das Array translatedCountries per Referenz übergeben wird.

Referenz im Contao Core: \Contao\System#L521-L528 und countries.php