Codeigniter Form Doğrulama ... formu yeniden nüfus

5 Cevap php

Ben bir kayıt belirli bir sayfa üzerinde örneğin bir giriş formu oluşturma sürecinde am (Mülk / kiralama / rec_id). Sunulması üzerine, veri, eklenen geçerliliği ve ilgili tüm mesajları ile gönderildiği orijinal sayfaya geri dönmek gerekmektedir.

  • Doğrulama başarısız olursa, yeniden doldurmak formu formu sayfayı yeniden yükleyin
  • Belirli bir doğrulama hatası Echo - örn. Geçersiz e-posta adresi vb

  • Eğer başarılı olursa, veri eklemek sayfayı yeniden yükleyin ve başarı mesajı görüntüler.

    fonksiyon sınıfı () {

    $this->load->library('form_validation'); $this->form_validation->set_rules('name','name','required|trim'); $this->form_validation->set_rules('email','email','required|trim|valid_email');

    $fields['name']	= 'Name';
    $fields['email'] = 'Email Address';
    
    
    $this->validation->set_fields($fields);
    
    
    if ($this->form_validation->run() == FALSE) 
    {
    	//failed - reload page and re-populate fields with any error messages
    }
    else
    {
         // display form with success message
    }
    

    }

Normalde bu sadece 'bir görünüm yükleme' ve ilgili sayfayı yeniden doldurmak için veri alanları veya ekran mesajları ileterek yapılır. Ama geri ürüne özel sayfa için bir 'yönlendirme' kullanmak zorunda. Doğrulama hataları taşımak için oturum verileri kullanarak daha bu başka yapmak için iyi bir yolu var mı ..?

Peşin, Michael teşekkürler

5 Cevap

Sessions CodeIgniter kılavuzuna bir göz atın ve 'FlashData' herhangi bir kullanım olup olmadığını görmek.

Siz formu yeniden doldurmak için set_value('field_name') işlevini kullanabilirsiniz. Görünümünde Örnek kullanım:

<input type="text name="name" value="<?php echo set_value('name'); ?>" />"

Form_validation gelen hataları görüntülemek için, validation_errors() işlevini kullanabilirsiniz. Görünümünde Örnek kullanım:

<?php echo validation_errors(); ?>

Ayrıca, link text daha fazla bilgi için bkz.

   $insertData=array(
            'name'=>NULL,
            'email'=>NULL);
 //setting validation rules
    $this->form_validation->set_rules('name', 'Name', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required|email');

//here you will get all data which user entered in form 
$insertData = $this->input->post(NULL, TRUE);

if ($this->form_validation->run() == FALSE) 
{
    //failed - reload page and re-populate fields with any error messages
    $this->load->view('view_name',$insertData)    

}
else
{
     //set flash data for displaying success message in redirected page
     $this->session->set_flashdata('success','Success message')
     redirect('controller_name');

}

view sayfası

<?php if ($this->session->flashdata('succes_message')) { echo    $this->session->flashdata('succes_message'); ?> } ?>

<form action='action page url' method='post'>
<input type='text' name='name' value='<?php echo $name ?>'/>
<input type='text' name='email' value='<?php echo $email ?>'/>
<input type='submit' value='Save'/>

Oturum verileri geri forma veri göndermek için basit ve verimli / en doğru yol olacaktır. Siz de çerezleri kullanabilirsiniz, ancak (cookie veriler her http isteği ile gönderilen beri) daha az güvenli olacaktır.

Diğer seçenek veritabanında bilgileri saklamak ve yönlendirme sonra onları tekrar almak olacaktır, ama bu uygulama için gereksiz karmaşıklığı ekleyerek olacağını hissediyorum.

Gerçekten basit bir çözüm için, hatta sadece bir SESSION değişkeni, sonra yönlendiriliyorsunuz sayfada hızlı bir şekilde çağırmak neredeyse içine POST / GET veri dökümü olabilir görünümünde bir mantık açısından yönlendirme şeffaf hale.

session_start();
$_SESSION['POST_DATA'] = $_POST;

Sadece Javascript / jQuery kullanarak istemci tarafı doğrulama yapabileceği sorunu hafifletmek için. Yani, temelde, yerine hemen yeni sayfaya gidiyor, formu geçerli olup olmadığını karar vereceğini, hangi eylem sadece javascript işlevi yönlendirildi alacağı gönderin. Sonra işler geçersiz elemanlar için güzel görünmesi için jQuery kullanabilirsiniz.