2014-05-12 2 views
0

코드 필드에 여러 필드가있는 양식이 있지만 유효하게 기입해야합니다. 난 단지에 채워지는 하나 개의 필드를 필요로하는 양식을 가질 필요가코드 유효성 검사기 유효성 검사 - 한 필드 만 채워야합니다.

$this->form_validation->_error_array = array(); // Multiform reset 
$this->form_validation->_field_data = array(); // Multiform reset 
$this->form_validation->set_error_delimiters('<div class="error">', '</div>'); 

if ($this->form_validation->run() === false || isset($errors) && count($errors) > 0) { 
    $errors[] = validation_errors('<div>', '</div>'); 
    $data['result'] = '<div class="error">' . implode('', $errors) . '</div>'; 
    $this->session->set_flashdata('result', $data['result']); 
} else { 
    // Check if a field has been filled in 
    if(
     (!$this->input->post('mail_everyone') || 0 == set_value('mail_everyone')) && 
     0 == set_value('mail_class_list') && 
     0 == set_value('mail_performance_list') && 
     0 == set_value('mail_mailing_list') && 
     0 == set_value('mail_filter_list') 
    ) { 
     //No filters have been set 
     $errors[] = validation_errors('<div>', '</div>'); 
     $errors[] = '<div>No valid mail type has been selected</div>'; 
     $data['result'] = '<div class="error">' . implode('', $errors) . '</div>'; 
     $this->session->set_flashdata('result', $data['result']); 
    } 

    $data['result'] = '<div class="success">Inserted : <em>' . $this->settings->format_datetime() . '</em></div>'; 
    $this->session->set_flashdata('result', $data['result']); 
} 

순간 나는 어떤 분야가 있는지 확인 후 유효성을 확인하고 그런 다음

<label for="mail_everyone">Mass Email</label> 
<label><input type="checkbox" name="mail_everyone" id="mail_everyone" value="1" <?php echo set_checkbox('mail_everyone', '1'); ?>/> Send to everyone</label> 
<?php echo form_error('mail_everyone'); ?> 

<label for="mail_class_list">Class Email</label> 
<select name="mail_class_list" id="mail_class_list"> 
    <option value="0">- Select -</option> 
    <?php foreach($filter_classes as $class) : ?> 
    <option value = "<?=$class['class_id']?>" <?php echo set_select('mail_class_list', $class['class_id'], ('class'==$mail_type&&$class['class_id']==$mail_type_id));?>><?=$class['class_code']?></option> 
    <?php endforeach; ?> 
</select> 
<?php echo form_error('mail_class_list'); ?> 

<label for="mail_mailing_list">Mailing List Email</label> 
<select name="mail_mailing_list" id="mail_mailing_list"> 
    <option value="0"> - Select - </option> 
    <?php foreach($mailing_lists as $list){ ?> 
    <option value="<?=$list['mailer_list_id']?>" <?php echo set_select('mail_mailing_list', $list['mailer_list_id'], ('mailer.list'==$mail_type&&$list['mailer_list_id']==$mail_type_id));?>><?=$list['name']?></option> 
    <?php } ?> 
</select> 
<?php echo form_error('mail_mailing_list'); ?> 

나는 유효성 검사 코드가 있습니다. 그러나이 코드는 작동하지 않습니다. 이것은 codeigniter에 대한 나의 첫 번째 탐구이며, 문서화가 도움이되지 못합니다. 그래서,

+0

당신이 각 필드를 확인하고 기반으로 참/거짓 반환하는 사용자 정의 콜백을 만들 수 있습니다 그들이 설정되어 있는지 여부. 동일한 콜백은 필드 유효성 검사 규칙 중 1 개에서만 설정하면됩니다. E.G. 컨트롤러에서'$ this-> form_validation-> set_rules ('mail_everyone', '', 'callback_check_mail_field')'및'check_mail_field() {}'함수를 호출합니다. 자세한 내용은 http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#callbacks – mic

+0

을 참조하십시오.하지만 설정 여부는 어떻게 확인합니까? – BeaverusIV

답변

0

내가 알아 낸 필드는 문자열로 돌아오고 있었다 및 "0"대신에 0의 일 :

"0" == set_value('mail_filter_list')