Kelas PHP untuk jadual HTML: tugasan atribut pelik
<p>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): </p>
<p><strong>Takrifan kaedah: </strong></p>
<pre class="brush:php;toolbar:false;">public function setData(
tatasusunan $data,
array $row_attributes = [],
array $cell_attributes = []
): bool {
// kod
}</pre>
<p><strong>Panggil: </strong></p>
<pre class="brush:php;toolbar:false;">$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
[],
[],
[],
[]
)
)
);</pra>
<p>Dalam contoh ini, jadual mempunyai tujuh lajur. </p>
<p>Di sini anda akan melihat output HTML. Perhatikan sifat sel bagi baris kedua dan ketiga: </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='Array' 1='Array'>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='Array' 1='Array'></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></pra>
<p>Ini adalah kod yang saya gunakan untuk melakukan semua ini. Saya akan menunjukkan kepada anda coretan kod untuk pemaparan sel dan cara mengendalikan sifat. </p>
<p><strong>Penyampaian sel: </strong></p>
<pre class="brush:php;toolbar:false;">// 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++;
}</pre>
<p><strong>Kaedah atribut:</strong></p>
<pre class="brush:php;toolbar:false;">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 [];
}</pre>
<p>Apa yang salah? terima kasih. </p>