2010-04-29 12 views
10

Düzenleme veya kayıt için kullanmak istediğim basit bir kod yazı tipim var. Formumun görüntülendiği ve değerlerin ilgili giriş kutularına girildiği aşamadayım. Ben CodeIgniter'daki form_validation kullanmak isterseniz,Codeigniter: Form doğrulama ve yeniden popülasyon kullanan bir düzenleme formu nasıl oluşturulur?

<input type="text" value="<?php echo $article['short_desc'];?>" name="short_desc" /> 

Ama sonra hiç Thos kod eklemek zorunda:

Bu

sadece onların görünümde olması için ne gerekiyorsa için kutular söyledi değerlerini ayarlayarak yapılır benim mark-up:
<input value="<?php echo set_value('short_desc')?>" type="text" name="short_desc" /> 

Yani değer set_value fonksiyonu ile ayarlanabilir değil sonrası verilerinden hata yeniden yerleştirilmesi gerekir gerekir.

İki formu birleştirmenin bir yolu var mı? Böylece, düzenleme formum düzenlenecek değerleri gösterebilir, ancak yeniden doldurulabilir mi?

Teşekkür

cevap

19

set_value() (En az CI sürümleri 1.7.1 ve 1.7.2 bakarak) yeniden doldurmak için bir şey yoksa aslında bir varsayılan değer için ikinci bir argüman alabilir. Böyle SET_VALUE basitçe varsayılan değer geçmek mümkün olmalıdır düşünülerek,

/** 
* Get the value from a form 
* 
* Permits you to repopulate a form field with the value it was submitted 
* with, or, if that value doesn't exist, with the default 
* 
* @access public 
* @param string the field name 
* @param string 
* @return void 
*/ 
function set_value($field = '', $default = '') 
{ 
    if (! isset($this->_field_data[$field])) 
     { 
      return $default; 
     } 

     return $this->_field_data[$field]['postdata']; 
} 

Yani:

<input value="<?php echo set_value('short_desc', $article['short_desc'])?>" type="text" name="short_desc" /> 

ise (hat 710) Form_validation.php kütüphanesinden aşağıdaki Bkz Yeniden değerlenecek bir değer yoktur, set_value() varsayılan olarak $article['short_desc']

Yardım eder.

+0

noktalarda görünüyor - şerefe! – Sergio

+0

Mükemmel Çözüm. Bu "set_value" yi test ederken, lütfen tüm alanlara "set_value()" fonksiyonunu uygulayın. Tek bir alanda test yapmak sonucu vermeyecektir. – Pravin

İlgili konular