CI 묻고 답하기

제목 이미 폼검증이 되있는 부분을 없애고 싶은데요.
카테고리 CI 2, 3
글쓴이 새해 작성시각 2017/03/27 23:21:16
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 15202   RSS
 컨트롤러 부분

public function board(){
        $this->load->database();
        $this->load->model(array('event_data_model', 'event_file_model'));
        $this->load->library('form_validation');
        $validation_rules = array(
            array(
                'field' => 'name',
                'label' => '이름',
                'rules' => 'trim|required',
            ),
            array(
                'field' => 'tel',
                'label' => '전화',
                'rules' => 'trim|required|valid_phone|is_unique[event_data.event_guest_tel]'
            ),
            array(
                'field' => 'addr',
                'label' => '주소',
                'rules' => 'trim|required'
            ),
            array(
                'field' => 'email',
                'label' => '이메일',
                'rules' => 'trim|required|valid_email|is_unique[event_data.event_guest_email]'
            ),
            array(
                'field' => 'facebookLink',
                'label' => '페이스북 링크',
                'rules' => 'trim|valid_url'
            ),
            array(
                'field' => 'boardType',
                'label' => '게시판 타입',
                'rules' => 'trim|required'
            ),
        );

        if (isset($_FILES['board_img_file']) && !empty($_FILES['board_img_file']['name'])){
            $this->form_validation->set_rules('board_img_file', '영수증 이미지', 'required');
        }

        $this->form_validation->set_rules($validation_rules);
        $form_validation = $this->form_validation->run();
        $this->_upload($form_validation);
    } 

 view 부분

<div class="row" style="margin-top: 20px;">
    <div class="col-xs-12">
        <?php
        echo validation_errors('<div class="alert alert-danger">', '</div>');
        echo show_alert_message(element('message', $data), '<div class="alert alert-success">', '</div>');
        echo show_alert_message(element('error', $data), '<div class="alert alert-danger">', '</div>');
        ?>
    </div>
</div>

<div class="col-md-12" style="margin-bottom: 20px; padding: 40px; background: #fff;">

    <form action="/event/board" method="POST" enctype="multipart/form-data">
        <input type="hidden" name="boardType" value="ko_receipt">

        <div class="row">
            <div class="col-md-6" style="text-align: center;">
                <img src="/assets/_custom/images/noimage.jpg" id="board_img" class="img-thumbnail" onclick="document.getElementById('board_img_file').click();" style="cursor: pointer; margin: 0 auto; width: 350px; max-height: 350px; min-height: 200px;">
                <input type="file" name="board_img_file" id="board_img_file" onchange="changeFile(this.files[0]);" style="display: none;">
            </div>
            <div class="col-md-6">

                <?php foreach ($boardDataArr as $value){ ?>
                <div class="row" style="padding: 10px;">
                    <div class="col-sm-3">
                        <label for="<?php echo $value['id'] ?>"> <?php echo $value['str'] ?>
                    </div>
                    <div class="col-sm-9">
                        <input type="text" style="cursor: text;" class="form-control" name="<?php echo $value['name'] ?>" id="<?php echo $value['id'] ?>" value="<?php echo set_value($value['name']); ?>">
                    </div>
                </div>
                <?php } ?>

            </div>

        </div>
        <button type="submit" class="btn btn-block btn-primary" style="margin-top: 20px; padding: 20px;">이벤트 참여하기
        </button>
    </form>
</div>

 

여기서 

board_img_file 에 대한 폼검증만 삭제하려면 어떻게 해야하나요?
 다음글 excel 다운로드 구현중 생성한 엑셀파일이 깨지는 현... (6)
 이전글 model 오류 관련 질문입니다 (2)

댓글

새해 / 2017/03/27 23:26:20 / 추천 0
저는 컨트롤러 부분 40~42번 코드를 없애서 실행해보았는데요. db에 추가가 안되더군요. 안되는 이유도 알고싶습니다.
Snowden / 2017/03/29 17:36:28 / 추천 1

파일 업로드에도 동일하게 적용되는 지는 모르겠습니다만...

필드에대한 규칙이 전혀 설정 안되어 있으면 값을 아예 안넘기는 걸로 알고 있습니다.

40, 42번줄만 지우고 41번은 남긴 뒤에 required 말고 큰 의미 없는 함수(trim 같은)을 넣어보세요.