Dalam kelas yang membina jadual HTML, saya mempunyai kaedah ini yang menjadikan jadual. Semuanya berfungsi dengan baik kecuali untuk penetapan atribut HTML di bawah syarat tertentu (indentasi, teg penutup, perwakilan data, dll.). Apabila saya menetapkan data sel, saya memanggil setData() untuk menerima tiga parameter dan menggunakannya seperti ini. Perhatikan bagaimana saya menetapkan parameter ketiga (sifat sel):
Takrifan kaedah:
public function setData( tatasusunan $data, array $row_attributes = [], array $cell_attributes = [] ): bool { // kod }
Panggil:
$table->setData( $penomboran->set hasil, [], // atribut baris array ( // atribut sel array(), // baris 1 (indeks 0) tatasusunan( // baris2 (indeks 1) ["id"=>"R2C1id"], // baris 2, sel 1 ["id"=>"R2C2id", "onclick"=>"R2C2_onclick();"], // baris 2, sel 2 ), tatasusunan( // baris 3 [], [], ["id"=>"R3C3id", "dipilih"=>"dipilih"], // baris 3, sel 3 [], [], [], [] ) ) );Dalam contoh ini, jadual mempunyai tujuh lajur.
Di sini anda akan melihat output HTML. Perhatikan sifat sel bagi baris kedua dan ketiga:
1Consumidor FinalConsumidor Final12Prueba SRLTu Prueba1234567890113Otra Prueba SAPrueba 2123456789021Ini adalah kod yang saya gunakan untuk melakukan semua ini. Saya akan menunjukkan kepada anda coretan kod untuk pemaparan sel dan cara mengendalikan sifat.
Penyampaian sel:
// proses sel $row_counter = 0; foreach ($ini->data sebagai $data) { // baris $row_build = ""; $cell_counter = 0; foreach ($data sebagai $cell_data) { // sel jika ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, $data_sel ?? "", $this->getHtmlAttributes("sel", $row_counter, $cell_counter), 3 ); } $cell_counter++; } // $cell_counter++; // lengkapkan sel kosong untuk mengekalkan row:hover pada baris penuh manakala ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, "", $this->getHtmlAttributes("sel", $row_counter, $cell_counter), 3 ); $cell_counter++; } $body_build .= $this->getHtmlDiv( $html_row_class, $row_build, $this->getHtmlAttributes("baris", $row_counter, 0), 2, benar ); $row_counter++; }Kaedah atribut:
fungsi peribadi getHtmlAttributes(rentetan $bahagian, int $row, int $column): tatasusunan { if (count($this->html_attributes[$section]) > 0) { if (array_key_exists($row, $this->html_attributes[$section])) { jika ($bahagian === "sel") { if (array_key_exists($column, $this->html_attributes[$section][$row])) { kembalikan $this->html_attributes[$section][$row][$column]; } } kembalikan $this->html_attributes[$section][$row]; } } kembali []; }Apa yang salah? terima kasih.
Nah, apabila saya menyiarkan soalan dan memilih kod, jawapannya muncul. Dalam keadaan kaedah
getHtmlAttributes()
中,缺少else
.