Kolayca bir PHP nesnesine tercüme edilebilir böylece HTML form elemanları yapısı nasıl?

5 Cevap php

Ben kolayca PHP opbjects bir dizi ayrıştırılır böylece benim HTML form alanları adlandırmak için en iyi yolu anlamaya çalışıyorum.

Örneğin ben elemanlarının aşağıdaki tablo vardır: (Bir de, form içinde olduğunu varsayalım)

<table>
  <tr id='payment0'>
    <td><input type='text' name='paymentType0'></td>
    <td><input type='text' name='paymentAmount0'></td>
    <td><input type='text' name='paymentAccount0'></td>
  </tr>
  <tr id='payment1'>
    <td><input type='text' name='paymentType1'></td>
    <td><input type='text' name='paymentAmount1'></td>
    <td><input type='text' name='paymentAccount1'></td>
  </tr>
</table>

Açıkçası ben tüm paymentType / Tutar / Hesap vb değerleri bulmak ve nesnelerin içine koymak $ _POST dizi üzerinden aramak için bir kod demet yazabilirsiniz. Ancak bu biraz koklamak hissediyor ve bu form elemanları isim için daha iyi bir yolu olup olmadığını merak ediyorum?

Bir yan not olarak, ben kontrol dizileri gibi alanları adlandırmak için teşebbüs vardı (en azından ben onlara diyoruz) böylece yerine paymentType0 it paymentType [0] ve PHP olsa yineleme bir dizi olarak görmek istiyorsunuz olacaktır. Bu yaklaşımla sorun jQuery ile bu alanlara başvuran nedeniyle köşeli parantez çok zor hale geliyor.

Bunun için dünyalar çözüm 'hem en iyi' nedir?

5 Cevap

Herhangi bir sorun olmadan dizi kullanabilirsiniz, ancak, paymentAmount[0], alanları paymentType[0] demiyorlar ...

Bunun yerine, payment[0][type], payment[0][amount], vb diyoruz

Sonra kayıtları rahatlıkla işlemek için çok daha kolay ilişkilendirilebilir diziler, halinde gruplandırılmış olacak:

foreach ($_POST["payment"] as $payment) {
   echo "The type was $payment[type] and the amount was $payment[amount]";
}

JQuery gelince: David'in öneri izleyin. JavaScript nesneleri sözdizimsel şeker ile gerçekten sadece ilişkisel diziler ve aşağıdaki gibi onların üyeleri erişebilir:

myForm["payment[0][amount]"].value = 300

Sen jQuery ile sunulan değerleri ön işleme düşünebiliriz. Bunun yerine ham form verilerini göndererek Eğer istemci tarafında onları yapısı ve kolay bir PHP nesnesine dönüşebilir JSON kullanarak sunucuya onları geçebileceği.

PHP'nin form işleme kütüphanesi onları Dizilere dönüştürmek böylece köşeli parantez ile adlar kullanın.

Sonra, JavaScript kullanarak başvurmak gerekiyorsa - kullanmak square bracket notation.

Eğer bir kez ucunda önceden formatlı veri, geçirilen değişkenler ile sorun yaşıyorsanız eğer, N3rd katılıyorum.

Bu fikir bir litte ekstrapolasyon sadece kullanıcı değerlerini girer ve ardından yerine her bir değişken adı nedir endişesi sonraki sayfaya JSON nesnesi göndermek göndermek gibi inşa JSON nesne verilerinizi saklamak anlamına gelir.

O değil eğer sizin sorununuzu giderir eğer ben emin değilim, ancak, başka bir olası çözüm vardır:

http://www.configure-all.com/arrayoffields.php

("Php form adları jquery dizide" konulu bir google arama yakaladı)

Her zaman aşağıdaki kodu deneyebilirsiniz:

foreach($_POST as $key => $val)
{
    if(isset($$key)) $$key = $val;
}

Ancak PHP_SELF vb gibi değişkenleri POST çünkü bu approarch kötü, bu yüzden bu kontrol etmek istiyorum.