| 제목 | [예제] 폼검증 필드배열 사용하기 | ||
|---|---|---|---|
| 글쓴이 | 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값을 넣어서 넘겨주면 깨끗이 해결이 되긴합니다..
아무튼 버그는 맞는가보군요
감사합니다