CodeIgniter Form Doğrulama - "dizi" olarak sonucu elde

3 Cevap php

Ben CodeIgniter kullanarak benim form doğrulama sınıfı yazıyorum. Ben ad değer çifti hata iletileri alabilirsiniz böylece herhangi bir yolu var mı? Örneğin, örnek bir biçimde var dört alan aşağıdaki gibidir: user_name, password, password_conf ve timezone. Bunlardan user_name ve password doğrulama aşağıdaki yürüttükten sonra başarısız oldu:

$result = $this->form_validation->run();

Yukarıdaki fonksiyon false döndürürse, ben aşağıdaki gibi isim değer çiftleri hataları almak istiyorum:

Array
{
  'user_name' => 'user name is required',
  'password' => 'passord is required'
}

Gerçekten ben AJAX çağrısına geri geçebilir bir JSON, oluşturmak istiyoruz. Ben (kirli) bir çözüm var: Ben aşağıdaki gibi tek tek doğrulama yöntemlerini çağırabilirsiniz:

$this->form_validation->required($user_name);
$this->form_validation->required($password);

Ad değer çifti tüm hata iletileri at once almak için başka bir yolu var mı?

EDIT: Ben cevaplar birinden jQuery ile doğrulama yapmak için önerildi:

jQuery will help in client side validation, but what about server side, there I am using CodeIgniter validation.

Ben öyle tasarladık:

  1. AJAX kullanarak tüm değerleri gönderebilir.
  2. Sunucu tarafında (PHP) olarak doğrulamak.
  3. Girişler geçerli ise istenilen işlemi yapın; kullanıcıya başka dönüş hatası.

3 Cevap

I have found one way myself by looking into the CodeIgniter code: I have extended the library CI_Form_validation like: -

class MY_Form_validation extends CI_Form_validation
{
    public function getErrorsArray()
    {
        return $this->_error_array;
    }
}

Ben bu kesmek, biliyorum, ama zaman benim ihtiyacını hizmet edecektir. Ben CodeIginter ekibi yakında dizi erişmek için bir arayüz ile gelip umuyoruz.

Kod ateşleyici doğrulama size normal bir sayfa tazelede hata mesajları verir gibi gören bu formu göndermeden önce jquery validation plugin tamamen doğrular istemci tarafında gibi bir şey kullanmak daha iyi olmaz mıydı? Gerekli hiçbir AJAX bu şekilde.

EDIT: I'm not suggesting NOT DOING server side validation, just that posting with AJAX in order to validate isn't necessary and will reduce server hits if you do it client side. It will gracefully degrade to the regular page refresh with errors on or a success message.

: Ben iyi gibi çözüm her yerde bir işlevi ekleyerek veya doğrulama kütüphanesi uzanan içermez

$validator =& _get_validation_object();
$error_messages = $validator->_error_array;

Referans: http://thesimplesynthesis.com/post/how-to-get-form-validation-errors-as-an-array-in-codeigniter/

Siz kodunuzda herhangi bir noktada bu aramak gerekir. Ayrıca, bir newer thread de bu anlatılır orada dikkati çekiyor.