안녕하세요, 항상 고생이 많으십니다.
현재, contact-form 게시판으로 메일폼을 제작 중입니다.
체크박스 항목 중 한 개를 '기타' 로 하여 이용자들이 직접 텍스트를 입력할 수 있는 항목을 제작하려 합니다.
기존 문의글 중
https://www.cosmosfarm.com/threads/document/38622
해당 문의글을 참고하여 functions 파일에 추가하였습니다.
추가한 코드는 아래와 같습니다.
add_filter('kboard_skin_fields', 'my_kboard_skin_fields2', 10, 2);
function my_kboard_skin_fields2($fields, $board){
if($board->id == '9'){ // 실제 적용될 게시판 ID 값으로 변경해주세요.
if(!isset($fields['end_construction'])){
$fields['end_construction'] = array(
'field_type' => 'end_construction',
'field_label' => '원하는 상담 주제(중복체크 가능)',
'class' => 'kboard-attr-text',
'hidden' => '',
'meta_key' => '',
'field_name' => '',
'permission' => '',
'roles' => '',
'default_value' => '',
'placeholder' => '',
'required' => '',
'show_document' => '1',
'description' => '',
'close_button' => 'yes'
);
}
}
return $fields;
}
add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html2', 10, 4);
function my_kboard_get_template_field_html2($field_html, $field, $content, $board){
if($field['field_type'] == 'end_construction'){
$fields = $board->fields();
ob_start();
?>
<div class="kboard-attr-row">
<label class="attr-name">7. 원하는 상담 주제(중복체크 가능)</label>
<div class="attr-value">
<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="자기이해 및 성장(성격, 인지·정서·대처행동 패턴자각 및 조절 등)"<?php if($fields->isSavedOption($content->option->end_construction, '자기이해 및 성장(성격, 인지·정서·대처행동 패턴자각 및 조절 등)')):?> checked<?php endif?>> 자기이해 및 성장(성격, 인지·정서·대처행동 패턴자각 및 조절 등)</label>
<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="애착 및 관계 스트레스(가족관계, 가족 외 대인관계- 친구, 동료, 연인, 연장자 등)"<?php if($fields->isSavedOption($content->option->end_construction, '애착 및 관계 스트레스(가족관계, 가족 외 대인관계- 친구, 동료, 연인, 연장자 등)')):?> checked<?php endif?>> 애착 및 관계 스트레스(가족관계, 가족 외 대인관계- 친구, 동료, 연인, 연장자 등)</label>
<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="과업수행 스트레스(학업, 업무, 진로 및 미래설계 준비 등)"<?php if($fields->isSavedOption($content->option->end_construction, '과업수행 스트레스(학업, 업무, 진로 및 미래설계 준비 등)')):?> checked<?php endif?>> 과업수행 스트레스(학업, 업무, 진로 및 미래설계 준비 등)</label>
<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="트라우마(심신의 안위를 위협받은 외상사건)"<?php if($fields->isSavedOption($content->option->end_construction, '트라우마(심신의 안위를 위협받은 외상사건)')):?> checked<?php endif?>> 트라우마(심신의 안위를 위협받은 외상사건)</label>
<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="자해 및 자살(사고, 충동, 시도 등)"<?php if($fields->isSavedOption($content->option->end_construction, '자해 및 자살(사고, 충동, 시도 등)')):?> checked<?php endif?>> 자해 및 자살(사고, 충동, 시도 등)</label>
<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="기타"<?php if($fields->isSavedOption($content->option->end_construction, '기타')):?> checked<?php endif?>> 기타 <input type="text" name="kboard_option_end_construction_etc" value="<?php echo $content->option->end_construction_etc?>"></label>
</div>
</div>
<?php
$field_html = ob_get_clean();
}
return $field_html;
}
add_filter('kboard_document_add_option_value_field_html', 'my_kboard_document_add_option_value_field_html', 10, 4);
function my_kboard_document_add_option_value_field_html($value_html, $field, $content, $board){
if($field['field_type'] == 'end_construction'){
$end_construction = is_array($content->option->end_construction) ? implode(',', $content->option->end_construction) : $content->option->end_construction;
$value_html = sprintf('<div class="kboard-document-add-option-value meta-key-%s"><span class="option-name">%s</span> : %s</div><hr>', $field['field_type'], $field['field_name'], "$end_construction : {$content->option->end_construction_etc}");
}
return $value_html;
}
위와 같이 코드를 추가하여 적용한 후, 입력필드 설정에서 필수 입력까지 체크를 했습니다.
하지만 메일폼 테스트 결과, 위의 추가한 체크박스 항목을 선택하지 않아도 메일폼이 접수가 되어버립니다.
위의 추가한 커스텀 필드를 이용자들이 필수로 체크해야 접수가 될 수 있도록 하고 싶은데 방법이 있을까요?
안녕하세요~^^
입력하신 코드 중
'required' => '',
부분을
'required' => '1',
로 변경해보시겠어요?
고맙습니다.
안녕하세요.
'required' => '1',
로 변경을 해도 접수가 되어버립니다..
어떤 부분이 문제일까요ㅠㅠ
커스텀한 체크박스 필드가 아닌 기존 체크박스 보고 똑같이 맞춰줬더니 해결이 됐습니다.
감사합니다.