Mencari cara yang lebih elegan untuk menetapkan atribut "dipilih" kepada elemen <input> yang dipilih sebelum ini
P粉635509719
P粉635509719 2024-01-16 20:46:55
0
1
409

Saya sedang mencipta aplikasi CRUD mudah menggunakan PHP. Pada halaman cipta, terdapat menu lungsur yang membolehkan pengguna memilih jenis lebuh raya yang ingin mereka masukkan maklumat. Pada halaman kemas kini saya ingin mengekalkan pilihan yang dibuat pengguna pada halaman cipta. Nilai yang dipilih oleh pengguna disimpan dalam objek JSON setempat. Saya datang dengan penyelesaian berikut:

<select name="route-type" id="route-type" required>

<option value="" selected="true" disabled>What type of route is this?</option>

<?php if( $highway['type'] == 'interstate') { ?>

<option value="interstate" selected>Interstate</option>
<option value="us-route">US Route</option>
<option value="state-route">State Route</option>

<?php } elseif ( $highway['type'] == 'us-route') { ?>
                
<option value="interstate">Interstate</option>
<option value="us-route" selected>US Route</option>
<option value="state-route">State Route</option>

<?php } elseif ( $highway['type'] == 'state-route') { ?>

<option value="interstate">Interstate</option>
<option value="us-route">US Route</option>
<option value="state-route" selected>State Route</option>

<?php } ?>

Masalahnya ialah ini kelihatan agak berulang dan perlu difaktorkan semula atau ditulis semula dalam beberapa cara. Ada apa-apa cadangan? Jelas sekali, jika terdapat 30 pilihan dalam senarai juntai bawah, maka adalah tidak betul untuk mempunyai 30 kemungkinan hasil dalam pernyataan if.

P粉635509719
P粉635509719

membalas semua(1)
P粉627136450

Berikut adalah penyelesaian (belum teruji):

$options = [
  'interstate' => 'Interstate',
  'use-route' => 'US Route',
  'state-route' => 'State Route'
];

foreach($options as $k=>$v) {
  echo "<option value=\"$k\"" . ($k===$highway['type']?'selected':'') . " />$v</option>\n";
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan