제목 | [예제] 폼검증 필드배열 사용하기 | ||
---|---|---|---|
글쓴이 | ci세상 | 작성시각 | 2009/08/26 17:17:23 |
|
|||
메뉴얼 : http://codeigniter-kr.org/user_guide/libraries/form_validation.html#arraysasfields 위의 메뉴얼대로 하시면 배열처리시 고생좀 하게 되는데요 아래 부분을 참조하시면 안되시는 부분들 해결이 되실것입니다.^^ ## 컨트롤러 ## <?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('title[]', 'title', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('welcome_message'); } else { $this->load->view('welcome_success'); } } } /* End of file welcome.php */ /* Location: ./system/application/controllers/welcome.php */## 뷰처리 ## <?php echo form_open(''); ?> <?php $title = set_value ( 'title[]' ); ?> <input name = "title[]" type = "text" value = "<?=($title)?$title[0]:' '?>" /> <input name = "title[]" type = "text" value = "<?=($title)?$title[1]:' '?>" /> <input name = "title[]" type = "text" value = "<?=($title)?$title[2]:' '?>" /> <input type="submit" value="Submit" /> </form> <?php echo validation_errors(); ?> 참조 : http://codeigniter.com/forums/viewthread/111929/ => 위코드도 처음 화면시 잘못된 부분이 있어서 제가 좀더 수정을 했습니다. 그래도 중요한 팁을 알려준 포럼글입니다.^^ |
|||
다음글 | 프로토타입을 이용한 자바스크립트에서 CI languag... | ||
이전글 | 데이타 global로 설정하여 view에 넘기기 (6) | ||
케이든
/
2009/08/27 00:06:50 /
추천
0
|
ci세상
/
2009/08/27 01:47:47 /
추천
0
## 컨트롤러 ##
<?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('title[0]', 'title1', 'required'); $this->form_validation->set_rules('title[1]', 'title2', 'required'); $this->form_validation->set_rules('title[2]', 'title3', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('welcome_message'); } else { $this->load->view('welcome_success'); } } } /* End of file welcome.php */ /* Location: ./system/application/controllers/welcome.php */ ## 뷰 ## <?php echo form_open(''); ?> <input name = "title[0]" type = "text" value = "<?php echo set_value('title[0]'); ?>" /> <input name = "title[1]" type = "text" value = "<?php echo set_value('title[1]'); ?>" /> <input name = "title[2]" type = "text" value = "<?php echo set_value('title[2]'); ?>" /> <input type="submit" value="Submit" /> </form> <?php echo form_error('title[0]'); ?> <?php echo form_error('title[1]'); ?> <?php echo form_error('title[2]'); ?> 위와 같이 키값을 정확히 넣어주면 해결이 되겠지만 귀찮다고 하시면 아래와 같이 그냥 돌려버리세요^^ <?=set_value('title['.$index.']')?> <?=$title['.$index.']')?> <?=form_error('title[]')?>참고로 Validation.php 코어를 보면요 function set_rules($data, $rules = '') { if ( ! is_array($data)) { if ($rules == '') return; $data = array($data => $rules); } foreach ($data as $key => $val) { $this->_rules[$key] = $val; } }위와같이 배열키값이 잡혀 있어서 찍을때에도 원하는 위치에 잡으려면 키를 잡아주는것이 맞는것 같습니다. 만약 키를 안 잡아 버리면 어느 위치인지 정확하게 파악되기가 힘든것 같습니다. |
케이든
/
2009/08/27 02:12:12 /
추천
0
네
저런 비슷한 방법으로 우회해서 사용 햇었던거같네요 감사합니다 |
예를 들어 ip를 적는 input이 10개가 (name="ip[]") 있고 rule에 valid_ip 를 넣게되면
에러메세지를 input마다 나눠주어 잘못된 ip에만 에러나도록 만들어야 하는 일이 생기게 됩니다.
그럴땐 조금 귀찮지만 key값을 넣어서 넘겨주면 깨끗이 해결이 되긴합니다..
아무튼 버그는 맞는가보군요
감사합니다