CI 묻고 답하기

제목 폼검증 필드배열 사용시 문제 질문입니다.
카테고리 CI 2, 3
글쓴이 꽈찌쭈 작성시각 2016/09/29 14:37:21
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 20934   RSS

참고글

http://codeigniter-kr.org/bbs/view/source?idx=7432&page=4&view_category=&lists_style=

http://codeigniter-kr.org/user_guide_2.1.0/libraries/form_validation.html#arraysasfields

http://stackoverflow.com/questions/14179874/codeigniter-set-value-not-re-populating-correctly-array-form-field

 

## 컨트롤러 ##

<?php
 
class Welcome extends Controller {
 
    function Welcome()
    {
        parent::Controller();  
    }
     
    function index()
    {
     
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
             
        $this->form_validation->set_rules('phone[]', '휴대전화', 'required');
             
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('welcome_message');
        }
        else
        {
            $this->load->view('welcome_success');
        }      
    }
}

## 뷰 ##

<?php $phone= set_value ( 'phone[]' ); ?>
<select name="phone[]" value="<?=($phone)?$phone[0]:'010 '?>">
    <option value="010">010</option>
    <option value="011">011</option>
</select>
<input name = "phone[]" type = "text" value = "<?=($phone)?$phone[1]:' '?>" />
<input name = "phone[]" type = "text" value = "<?=($phone)?$phone[2]:' '?>" />
<?php echo form_error('phone[]'); ?>

 

위의 뷰와 같이 전화번호를 select와 input:text 를 섞어서 사용하려고 합니다.

폼검증 rules에 따라 체크를 하고 휴대전화를 입력하세요 라는 하나의 에러를 표시 후

입력된 값을 노출시켜주는게 목적입니다.

참고글을 참고하여 개발했습니다만

$_POST값으로는 $phone[] 배열이 잘 출력이 되는데

set_value('phone[]')의 값에는 첫번째인 select 값만 담겨있습니다.

예) 값이 010이라고 하면 array('0' => "0", '1' => "1", '2' => "0");

전화번호의 첫번째 부분을 select가 아닌 input:text로 변경하여도 같은 문제가 발생하네요

어떻게 해결을 해야될까요?

 

## 추가내용 ##

value="<?=($phone)?$phone[0]:'010 '?>"

라고 넣은 부분은 스크립트단에서 처리 중입니다.

 다음글 데이터 등록시 긴 로딩 후 이런 에러가 발생하네요 (2)
 이전글 페이지네이션 옵션 설정 중 base_url 설정부분에서... (2)

댓글

변종원(웅파) / 2016/10/04 00:30:58 / 추천 0

phone[] 를 잘못 사용하고 있습니다. 같은 성질의 연속된 번호를 대상으로 사용하시는 것이 좋고

전화번호 같은 경우는 그냥 phone1, phone2 정도로 사용하는게 좋습니다.

꽈찌쭈 / 2016/10/04 09:22:51 / 추천 0

@웅파

네 보통은 나눠서 사용하고 있습니다만

set_rules를 한꺼번에 처리하고 싶었습니다.