मैं एक ही समस्या थी की तरह सेट कर सकते हैं। मैंने एक संपर्क फ़ॉर्म बनाया जो उपयोगकर्ता को एक अवतार अपलोड करने और एक ही समय में अन्य जानकारी संपादित करने की अनुमति देता है। प्रत्येक फ़ील्ड के लिए फॉर्म सत्यापन त्रुटियां अलग-अलग दिखाई देती हैं। मैं फ़ाइल इनपुट और अन्य लोगों के लिए एक अलग प्रदर्शन योजना बर्दाश्त नहीं कर सका - मेरे पास एक मानक विधि है जो त्रुटियों को प्रदर्शित करने का ख्याल रखती है।
मैंने फॉर्म सत्यापन के साथ किसी भी अपलोड त्रुटि को मर्ज करने के लिए नियंत्रक परिभाषित संपत्ति और कॉलबैक सत्यापन फ़ंक्शन का उपयोग किया।
# controller property
private $custom_errors = array();
# form action controller method
public function contact_save()
{
# file upload for contact avatar
$this->load->library('upload', array(
'allowed_types'=>'gif|jpg|jpeg|png',
'max_size'=>'512'
));
if(isset($_FILES['avatar']['size']) && $_FILES['avatar']['size']>0)
{
if($this->upload->do_upload('avatar'))
{
# avatar saving code here
# ...
}
else
{
# store any upload error for later retrieval
$this->custom_errors['avatar'] = $this->upload->display_errors('', '');
}
}
$this->form_validation->set_rules(array(
array(
'field' => 'avatar',
'label' => 'avatar',
'rules' => 'callback_check_avatar_error'
)
# other validations rules here
);
# usual form validation here
if ($this->form_validation->run() == FALSE)
{
# display form with errors
}
else
{
# update and confirm
}
}
# the callback method that does the 'merge'
public function check_avatar_error($str)
{
#unused $str
if(isset($this->custom_errors['avatar']))
{
$this->form_validation->set_message('check_avatar_error', $this->custom_errors['avatar']);
return FALSE;
}
return TRUE;
}
नोट::
यहाँ मेरी कोड के एक उद्धरण है के रूप में फ़ाइल इनपुट अगर वहाँ अन्य प्रपत्र फ़ील्ड्स में किसी भी त्रुटि है, अपलोड सफलता पर फिर से आबाद नहीं होगा, मैं स्टोर और किसी भी करने से पहले इसे अद्यतन अन्य सत्यापन होता है - इसलिए उपयोगकर्ता को फ़ाइल को संशोधित करने की आवश्यकता नहीं होती है। यदि ऐसा होता है तो मेरी अधिसूचना थोड़ा अलग है।
मैं आम तौर पर फ़ॉर्म को सत्यापित करके ऐसा करता हूं और यदि सब ठीक है तो मैं फ़ाइल अपलोड की वैधता की जांच करना शुरू करता हूं। – janosrusiczki