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).
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.
{% import "@elementum/macros/forms.html.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 %}
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.
$this->getSettingsValues();
Vous pouvez alors utiliser cette méthode après avoir récupérer votre page admin depuis un Controller par exemple
#[Template('home')] public function frontPage(){ $estate = $this->adminPages()->getPage("estate-options"); $estateValues = $estate->getSettingsValues(); return $this->render('@theme/index.html.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.
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.
public function post() { if (isset($post['reset'])) { $this->resetSettings(); return; } foreach ($post as $key => $value) { $this->saveSetting($key, $value); } }