Aller au contenu principal
Version: 0.6.0

Formulaire

La création de formulaire pour une page administrateur est simplifié par le biais de macros Twig.

Définir des champs

Dans la class de votre page administrateur, vous pouvez définir des champs via la méthode : addSetting($name, $defaultValue).

app/Admin/Pages/MyAdminPage.php
public function __construct()
{
    /** ... */

    $this
        ->addSetting("my_setting", "default_value")
        ->addSetting("my_setting_2", "default_value_2");
}

Créer un formulaire

Depuis le fichier .twig de votre page administrateur, vous pouvez créer un formulaire via la macro form.

views/admin/pages/my-admin-page.twig
{% import "@elementum/macros/forms.twig" as forms %}
{% block body %}
    <form method="post" class="elementum">
            {{ forms.input("Mon premier champ", "my_setting", data.my_setting) }}
            {{ forms.input("Mon deuxième champ", "my_setting_2", data.my_setting_2) }}
            {{ forms.submit("Enregistrer") }}
    </form>
{% endblock %}
remarque

La variable data est a envoyer à la vue Twig via la méthode render de la méthode front de votre class. Pour simplifié la récupération des données, la méthode getSettingsValues() est disponible. Si aucune valeur n'est défini pour un champ, celle pas défaut sera retournée.

Récupération des valeurs

La class possède une méthode getSettingsValues() qui permet de récupérer les valeurs des champs.

app/Admin/Pages/MyAdminPage.php
$this->getSettingsValues();

Vous pouvez alors utiliser cette méthode après avoir récupérer votre page admin depuis un Controller par exemple

app/Controllers/MyController.php
    #[Template('home')]
    public function frontPage(){
        $estate = $this->adminPages()->getPage("estate-options");
        $estateValues = $estate->getSettingsValues();

        return $this->render('@theme/index.twig', compact('estateValues'));
    }

Traitement de donnée spécifique

Si vous devez effectuer une traitement des données avant l'enregistrement en base de données, vous pouvez placer votre logique dans le méthode post de votre page admin.

remarque

Cette méthode est commenté par défaut car il n'est pas obligatoire de traiter les données manuellements. Elementum sauvegarde automatiquement les valeurs de champs si la méthode post n'existe pas.

app/Admin/Pages/MyAdminPage.php
public function post()
{
    if (isset($post['reset'])) {
            $this->resetSettings();
            return;
        }

        foreach ($post as $key => $value) {
            $this->saveSetting($key, $value);
        }
}