Kod Ateşleyici form verilerini ve doğrulama verileri doldurmak için kolay bir yolu?

4 Cevap php

I'm new to code igniter. I'm following the form validation tutorial found at: http://www.codeignitor.com/user_guide/libraries/validation.html

Ben yeniden doldurmak için, formu almak için görünümde çok fazla yazıyorum bulabilirsiniz. Örneğin, burada benim GİRİŞ alanlardan biri gibi görünecektir:

<input type="text" name="email" value="<?=$this->validation->email ? $this->validation->email : $array_db_values['email'] ?>" />

Temelde, ne zaman form ilk yüklendiğinde, bu veritabanından bir değer göstermelidir. Kullanıcı değerini değiştirir ve doğrulama başarısız olursa, o zaman formu yanlışlıkla teslim değerini gönderilmesi gerekiyor.

Kod ateşleyici bu tür çıktı render bir "temiz" bir yolu var mı? Aksi takdirde, benim denetleyicisi böyle bir şey yapacağım:

$array_db_values = getdbresults();
if($_POST['submit'])
foreach($_POST as $key=>$val)
$array_db_values[$key] = $val;

Postback veri varsa bu şekilde, her zaman veritabanı değerleri geçersiz kılar.

Sonra benim görünümünde giriş alanları basit olabilir:

<input type="text" name="email" value="<?=$array_db_values['email'] ?>" />

Bu senaryo işlemek için daha iyi / yerli CI yolu var mı?

4 Cevap

Ben daha kolay bir yolu olduğunu sanmıyorum, en iyi yolu, IMO controller böyle bir şey yapmak için:

if (isset($_POST['submit']))
{
    $values = $_POST;
}

else
{
    $values = getdbresults();
}

Kısa $ _POST dizi döngü, gerek yok:

$values = (isset($_POST['submit'])) ? $_POST : getdbresults();

Senin görünümünde, aynı yapın:

<input type="text" name="email" value="<?=$values['email'] ?>" />

Veya kullanmak Form helper:

echo form_input('email', $values['email']);

Ne yapıyorsun tam olarak aynı şeyi I'mm. Bu biraz hantal ama çok kötü imho bulunuyor.

Ben tutuşuyor Kod forumlarda macigniter en Formu Lib kontrol, formlar üzerinde çalışan hakkında aynı şekilde hissettim. O zaman bir ton kazandırır ve gerçekten iyi yazılmış.

Siz Datamapper overzealous projeye içine baktı mı?

http://www.overzealous.com/dmz/

Bu modeli düzeyinde doğrular. Form alanlarda, (veritabanından veya önceki mesaja gelen ya) modelinden gelecek değerini ayarlayabilirsiniz.

<input type='text' name='email' value='<?=$object->data_item ?>' />

Ben de CodeIgniter için oldukça yeni değilim, ama bu kütüphaneyi ekleyerek işler çok daha kolay yaptı. Bu proje aynı zamanda gerçekten işler daha kolay yapabilir form uzantısı ile geliyor, ancak ben henüz onunla çok oynamadım.