debutant - problème classe

Par David1970, il y a 3 ans


Bonsoir,
Je débute dans les classes et je n'arrive pas à trouver la solution à mon problème. La classe est fortement inspirée de la classe

Le code

<?php require 'classes/Form.class.php'; // $new_form = new Create_form('nom du formulaire', 'action', 'method : get/post', 'tag entre champ : p/div', 'position du label : before/after/top'); $new_form = new Create_form('formulaire', 'verification.php', 'post', 'p', 'top'); echo $new_form->Start_form(); echo $new_form->Field_form('text', 'username', 'votre nom', TRUE, 'login'); echo $new_form->Field_form('password', 'password', 'mot de passe', TRUE, 'mot de passe'); echo $new_form->Field_form('date', 'date de naissance', 'votre date de naissance', TRUE, 'date de naissance'); echo $new_form->End_form(); ?> <?php /** * Create_form * Classe permettant la création de formulaire * Formation POO */ class Create_form { public string $Form_name = 'formulaire'; public string $Form_action = 'verification.php'; public string $Form_method = 'post'; public string $Form_field_tag_surround = 'p'; public string $Form_field_label_position = 'before'; public function __construct($Form_name, $Form_action, $Form_method, $Form_field_tag_surround, $Form_field_label_position) { $this->Form_name = $Form_name; $this->Form_action = $Form_action; $this->Form_method = $Form_method; $this->Form_field_tag_surround = $Form_field_tag_surround; $this->Form_field_label_position = $Form_field_label_position; } private function surround($html) { return "<{$this->Form_field_tag_surround}>{$html}</{$this->Form_field_tag_surround}>"; } /** * Start_form * * @param mixed $Form_name * @param mixed $Form_action * @param mixed $Form_method * @return void */ public function Start_form() { return '<form name="' . $this->Form_name . '" action="' . $this->Form_action . '"method="' . $this->Form_method . '">'; } /** * End_form * * @return void */ public function End_form() { return '</form>'; } public function Field_form(string $Field_type = 'text', string $Field_name = '', string $Field_placeholder = '', bool $Field_required = TRUE, $Field_label = 'label') { $field_form_temp = ''; $field_form_label_top = ''; if ($this->Form_field_label_position === 'top') { $field_form_label_top .= '<' . $this->Form_field_tag_surround . '><label for="' . $this->Form_name . '">' . $Field_label . '</label></' . $this->Form_field_tag_surround . '>'; } if ($this->Form_field_label_position === 'before') { $field_form_temp .= '<label for="' . $this->Form_name . '"> ' . $Field_label . '</label>'; } $field_form_temp .= '<input type="' . $Field_type . '" name="' . $Field_name . '"'; $field_form_temp .= 'placeholder="' . $Field_placeholder . '"'; if ($Field_required === TRUE) { $field_form_temp .= ' required'; } $field_form_temp .= '>'; if ($this->Form_field_label_position === 'after') { $field_form_temp .= '<label for="' . $this->Form_name . '"> ' . $Field_label . '</label>'; } return $field_form_label_top . $this->surround($field_form_temp); } }

Ce que je souhaiterai

La méthode surround(html) entoure les fields du formulaire avec la balise définie par $Form_field_tag_surround

J'aimerai réussir à faire la même chose avec les labels pour les placer devant, après ou en haut du fied. J'arrive à le faire dans la méthode $Field_form et Form_field_label_position mais je pense qu'il y a moyen de faire plus propre et plus efficace.

Merci.

Aucune réponse