Classe PHP pour tableau HTML : attribution d'attributs étranges
P粉384679266
P粉384679266 2023-09-06 00:38:07
0
1
479
<p>Dans la classe qui construit le tableau HTML, j'ai cette méthode qui restitue le tableau. Tout fonctionne bien sauf l'attribution d'attributs HTML sous certaines conditions (indentation, balises fermantes, représentation des données, etc.). Lorsque je définis les données de la cellule, j'appelle setData() pour recevoir les trois paramètres et les utiliser comme ceci. Remarquez comment j'ai défini le troisième paramètre (propriété de cellule) : </p> <p><strong>Définition de la méthode : </strong></p> <pre class="brush:php;toolbar:false;">fonction publique setData( tableau $données, tableau $row_attributes = [], tableau $cell_attributes = [] ): booléen { // le code }</pré> <p><strong>Appel : </strong></p> <pre class="brush:php;toolbar:false;">$table->setData( $pagination->resultset, [], // attributs de ligne array( // attributs de cellule array(), // ligne 1 (index 0) array( // rangée2 (index 1) ["id"=>"R2C1id"], // ligne 2, cellule 1 ["id"=>"R2C2id", "onclick"=>"R2C2_onclick();"], // ligne 2, cellule 2 ), tableau( // ligne 3 [], [], ["id"=>"R3C3id", "selected"=>"selected"], // ligne 3, cellule 3 [], [], [], [] ) ) );</pré> <p>Dans cet exemple, le tableau comporte sept colonnes. </p> <p>Ici, vous verrez la sortie HTML. Notez les propriétés des cellules des deuxième et troisième lignes : </p> <pre class="brush:php;toolbar:false;"><div class='table-body'> <div class='table-row'> <div class='table-row-cell'>1</div> <div class='table-row-cell'>Consumidor Final</div> <div class='table-row-cell'>Consumidor Final</div> <div class='table-row-cell'></div> <div class='table-row-cell'>1</div> <div class='table-row-cell'></div> <div class='table-row-cell'></div> </div> <div class='table-row'> <div class='table-row-cell' id='R2C1id'>2</div> <div class='table-row-cell' id='R2C2id' onclick='R2C2_onclick();'>Prueba SRL</div> <div class='table-row-cell' 0='Array' 1='Array'>Tu Prueba</div> <div class='table-row-cell' 0='Tableau' 1='Tableau'>12345678901</div> <div class='table-row-cell' 0='Array' 1='Array'>1</div> <div class='table-row-cell' 0='Array' 1='Array'></div> <div class='table-row-cell' 0='Tableau' 1='Tableau'></div> </div> <div class='table-row'> <div class='table-row-cell'>3</div> <div class='table-row-cell'>Otra Prueba SA</div> <div class='table-row-cell' id='R3C3id' selected='selected'>Prueba 2</div> <div class='table-row-cell'>12345678902</div> <div class='table-row-cell'>1</div> <div class='table-row-cell'></div> <div class='table-row-cell'></div> </div> </div></pré> <p>C'est le code que j'utilise pour faire tout cela. Je vais vous montrer l'extrait de code pour le rendu des cellules et comment gérer les propriétés. </p> <p><strong>Rendu des cellules : </strong></p> <pre class="brush:php;toolbar:false;">// cellules de processus $compteur_ligne = 0 ; foreach ($this->data as $data) { // ligne $row_build = ""; $ compteur_cellule = 0 ; foreach ($data as $cell_data) { // cellule si ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, $cell_data ?? $this->getHtmlAttributes("cell", $row_counter, $cell_counter), 3 ); } $cell_counter++; } // $cell_counter++; // complète les cellules vides pour préserver la ligne : survolez la ligne complète tandis que ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, "", $this->getHtmlAttributes("cell", $row_counter, $cell_counter), 3 ); $cell_counter++; } $body_build .= $this->getHtmlDiv( $html_row_class, $row_build, $this->getHtmlAttributes("ligne", $row_counter, 0), 2, vrai ); $row_counter++; }</pré> <p><strong>Méthodes d'attribut :</strong></p> <pre class="brush:php;toolbar:false;">fonction privée getHtmlAttributes(string $section, int $row, int $column) : tableau { if (count($this->html_attributes[$section]) > 0) { if (array_key_exists($row, $this->html_attributes[$section])) { if ($section === "cellule") { if (array_key_exists($column, $this->html_attributes[$section][$row])) { return $this->html_attributes[$section][$row][$column]; } } return $this->html_attributes[$section][$row]; } } retour []; }</pré> <p>Qu'est-ce qui ne va pas ? Merci. </p>
P粉384679266
P粉384679266

répondre à tous(1)
P粉349222772

Eh bien, lorsque j'ai posté la question et sélectionné le code, la réponse est apparue. En état méthode getHtmlAttributes() 中,缺少 else.

private function getHtmlAttributes(string $section, int $row, int $column): array
{

    if (count($this->html_attributes[$section]) > 0) {
        if (array_key_exists($row, $this->html_attributes[$section])) {
            if ($section === "cell") {
                if (array_key_exists($column, $this->html_attributes[$section][$row])) {
                    return $this->html_attributes[$section][$row][$column];
                } else { // <-- this 
                    return [];
                }
            }
            return $this->html_attributes[$section][$row];
        }
    }
    return [];
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal