폼(Form Helper)

폼 헬퍼는 폼조작에 필요한 함수들을 제공합니다.

헬퍼 로딩 Loading this Helper

헬퍼는 아래와 같이 로드합니다:

$this->load->helper('form');

필드 값을 이스케이프 Escaping field values

폼 요소 내에서 따용표 같은 HTML 과 문자를 사용할 경우가 있습니다. 그런 경우 안전하게 하기 위해서는 공통함수(common function) html_escape() 를 사용해야 합니다.

다음 예제를 생각해봅시다:

$string = 'Here is a string containing "quoted" text.';

<input type="text" name="myfield" value="<?php echo $string; ?>" />

위 예제는 따옴표를 포함하고 있기 때문에, 폼이 깨지게 됩니다. html_escape() 함수는 HTML 특수문자를 안전하게 사용 가능하게 변환합니다:

<input type="text" name="myfield" value="<?php echo html_escape($string); ?>" />

Note

이 페이지에 나열되어 있는 폼 헬퍼를 사용하는 경우, 폼 값은 자동적으로 이스케이프가 됩니다. 따라서 이 함수를 호출할 필요가 없습니다. 이 함수는 여러분이 직접 폼 태그를 생성하는 경우 사용해주세요.

사용 가능한 함수들 Available Functions

아래의 함수들이 사용 가능합니다:

form_open([$action = ''[, $attributes = ''[, $hidden = array()]]])
인수:
  • $action (string) – Form action/target URI string
  • $attributes (array) – HTML attributes
  • $hidden (array) – An array of hidden fields’ definitions
반환값:

An HTML form opening tag

반환형:

문자열

환경설정(config preferences) 파일에 설정해둔 기반(base) URL을 포함한 폼 태그의 여는 부분을 생성합니다. 옵션으로 폼 속성(attributes)과 숨김필드(hidden input)를 추가하실 수 있으며, 설정 파일의 문자 코드 값에 따라 항상 accept-charset 속성이 추가됩니다.

이 함수를 사용했을 때 하드코딩보다 좋은 점은 URL이 변해도 신경 쓸 필요가 없다는 점입니다. (이식성이 좋음).

간단한 예제:

echo form_open('email/send');

위 예제는 아래와 같이 기반URL(base URL) 에 “email/send” URI 새그먼트를 덧붙인 폼을 생성합니다:

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">

속성 추가하기 Adding Attributes

속성(Attributes)은 연관 배열로 만드신 후 두 번째 파라미터로 전달하여 설정할 수 있습니다:

$attributes = array('class' => 'email', 'id' => 'myform');
echo form_open('email/send', $attributes);

아니면 두 번째 파라미터를 문자열로 지정할 수 있습니다:

echo form_open('email/send', 'class="email" id="myform"');

위 예제는 아래와 유사한 폼을 생성합니다:

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" class="email" id="myform">

숨김 필드 추가 Adding Hidden Input Fields

숨김필드(Hidden fields)는 세 번째 파라미터에 아래와 같이 연관배열을 전달하여 생성합니다:

$hidden = array('username' => 'Joe', 'member_id' => '234');
echo form_open('email/send', '', $hidden);

2번째 파라미터 값은 생략할 수 있습니다.

위 예제는 아래와 유사한 폼을 생성합니다:

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">
        <input type="hidden" name="username" value="Joe" />
        <input type="hidden" name="member_id" value="234" />
form_open_multipart([$action = ''[, $attributes = array()[, $hidden = array()]]])
인수:
  • $action (string) – Form action/target URI string
  • $attributes (array) – HTML attributes
  • $hidden (array) – An array of hidden fields’ definitions
반환값:

An HTML multipart form opening tag

반환형:

문자열

이 함수는 form_open() 와 동일하나 multipart 속성을 추가한다는 점이 다릅니다. multipart는 폼에서 파일을 업로드 해야할 때 필요한 속성입니다.

form_hidden($name[, $value = ''])
인수:
  • $name (string) – Field name
  • $value (string) – Field value
반환값:

An HTML hidden input field tag

반환형:

문자열

숨김필드(hidden input)를 생성합니다. 이름/값(name/value)을 넘겨주어 하나의 필드를 생성하실 수 있습니다:

form_hidden('username', 'johndoe');
// Would produce: <input type="hidden" name="username" value="johndoe" />

... 아니면, 연관배열을 통해서 여러 개의 필드를 생성하실 수도 있습니다:

$data = array(
        'name'  => 'John Doe',
        'email' => 'john@example.com',
        'url'   => 'http://example.com'
);

echo form_hidden($data);

/*
        Would produce:
        <input type="hidden" name="name" value="John Doe" />
        <input type="hidden" name="email" value="john@example.com" />
        <input type="hidden" name="url" value="http://example.com" />
*/

또는 모든 값 필드에 연관배열을 전달할 수 있습니다:

$data = array(
        'name'  => 'John Doe',
        'email' => 'john@example.com',
        'url'   => 'http://example.com'
);

echo form_hidden('my_array', $data);

/*
        Would produce:

        <input type="hidden" name="my_array[name]" value="John Doe" />
        <input type="hidden" name="my_array[email]" value="john@example.com" />
        <input type="hidden" name="my_array[url]" value="http://example.com" />
*/

만약 여분 속성을 가진 히든 필드를 생성할려면:

$data = array(
        'type'  => 'hidden',
        'name'  => 'email',
        'id'    => 'hiddenemail',
        'value' => 'john@example.com',
        'class' => 'hiddenemail'
);

echo form_input($data);

/*
        Would produce:

        <input type="hidden" name="email" value="john@example.com" id="hiddenemail" class="hiddenemail" />
*/
form_input([$data = ''[, $value = ''[, $extra = '']]])
인수:
  • $data (array) – Field attributes data
  • $value (string) – Field value
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML text input field tag

반환형:

문자열

표준 입력필드(text input)를 생성합니다. 아래와 같이 첫 번째와 두 번째 파라미터에 필드명과 값만 넘겨주셔도 됩니다:

echo form_input('username', 'johndoe');

필드의 여러 속성을 아래와 같이 연관배열로 넘겨주어 설정할 수도 있습니다:

$data = array(
        'name'          => 'username',
        'id'            => 'username',
        'value'         => 'johndoe',
        'maxlength'     => '100',
        'size'          => '50',
        'style'         => 'width:50%'
);

echo form_input($data);

/*
        Would produce:

        <input type="text" name="username" value="johndoe" id="username" maxlength="100" size="50" style="width:50%"  />
*/

자바스크립트 등 부가적인 데이터를 설정 하시려면, 세 번째 파라미터로 문자열을 넘겨주세요:

$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);

아니면 배열을 넘겨줄 수도 있습니다:

$js = array('onClick' => 'some_function();');
echo form_input('username', 'johndoe', $js);
form_password([$data = ''[, $value = ''[, $extra = '']]])
인수:
  • $data (array) – Field attributes data
  • $value (string) – Field value
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML password input field tag

반환형:

문자열

이 함수는 “암호타입(password)”의 입력필드 생성이라는 점을 제외하면 form_input() 함수와 완전히 동일합니다.

form_upload([$data = ''[, $value = ''[, $extra = '']]])
인수:
  • $data (array) – Field attributes data
  • $value (string) – Field value
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML file upload input field tag

반환형:

문자열

이 함수는 파일 업로드에 사용되는 파일타입(file)의 입력필드 생성이라는 점을 제외하면 form_input() 함수와 완전히 동일합니다.

form_textarea([$data = ''[, $value = ''[, $extra = '']]])
인수:
  • $data (array) – Field attributes data
  • $value (string) – Field value
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML textarea tag

반환형:

문자열

이 함수는 파일 업로드에 사용되는 “텍스트영역 타입(textarea)” 생성이라는 점을 제외하면 form_input() 함수와 완전히 동일합니다.

Note

위 예제에서 설정하신 maxlengthsize 속성대신, rowscols 를 설정하셔야 합니다.

form_dropdown([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
인수:
  • $name (string) – Field name
  • $options (array) – An associative array of options to be listed
  • $selected (array) – List of fields to mark with the selected attribute
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML dropdown select field tag

반환형:

문자열

표준 드롭다운(drop-down)필드를 생성합니다. 첫 번째 파라미터는 필드의 이름, 두 번째 파라미터는 옵션의 연관배열, 세 번째 파라미터는 기본으로 선택될 값을 지정합니다. 세 번째 파라미터로 배열을 넘겨주면, 이그나이터는 필드를 다중선택(multiple select)의 형태로 생성해줍니다.

예제:

$options = array(
        'small'         => 'Small Shirt',
        'med'           => 'Medium Shirt',
        'large'         => 'Large Shirt',
        'xlarge'        => 'Extra Large Shirt',
);

$shirts_on_sale = array('small', 'large');
echo form_dropdown('shirts', $options, 'large');

/*
        Would produce:

        <select name="shirts">
                <option value="small">Small Shirt</option>
                <option value="med">Medium  Shirt</option>
                <option value="large" selected="selected">Large Shirt</option>
                <option value="xlarge">Extra Large Shirt</option>
        </select>
*/

echo form_dropdown('shirts', $options, $shirts_on_sale);

/*
        Would produce:

        <select name="shirts" multiple="multiple">
                <option value="small" selected="selected">Small Shirt</option>
                <option value="med">Medium  Shirt</option>
                <option value="large" selected="selected">Large Shirt</option>
                <option value="xlarge">Extra Large Shirt</option>
        </select>
*/

<select> 태그에서 자바스크립트등 추가로 설정하실 때는 문자열을 네 번째 파라미터로 넘겨주세요 :

$js = 'id="shirts" onChange="some_function();"';
echo form_dropdown('shirts', $options, 'large', $js);

아니면 배열로 넘겨줄 수 있습니다:

$js = array(
        'id'       => 'shirts',
        'onChange' => 'some_function();'
);
echo form_dropdown('shirts', $options, 'large', $js);

$options 이 다중배열로 전달된 경우, form_dropdown() 는 <optgroup> 를 만들어 배열키를 라벨로 사용합니다.

form_multiselect([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
인수:
  • $name (string) – Field name
  • $options (array) – An associative array of options to be listed
  • $selected (array) – List of fields to mark with the selected attribute
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML dropdown multiselect field tag

반환형:

문자열

표준 다중 선택 필드를 만들 수 있습니다. 첫 번째 파라미터는 필드명을 가집니다. 두 번째 파라미터는 옵션들의 연관배열을 가집니다. 세 번째 파라미터는 선택되고자 하는 옵션의 값을 가집니다.

파라미터 사용은 위 에서 나온 form_dropdown() 과 동일합니다, 단 필드명은 배열을 사용한다는 것만 제외. 예. foo[].

form_fieldset([$legend_text = ''[, $attributes = array()]])
인수:
  • $legend_text (string) – Text to put in the <legend> tag
  • $attributes (array) – Attributes to be set on the <fieldset> tag
반환값:

An HTML fieldset opening tag

반환형:

문자열

fieldset/legend 필드를 생성합니다.

예제:

echo form_fieldset('Address Information');
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();

/*
        Produces:

                <fieldset>
                        <legend>Address Information</legend>
                                <p>form content here</p>
                </fieldset>
*/

다른 함수들과 마찬가지로, 부가적인 속성을 설정하기 위해서 두 번째 파라미터를 연관배열로 넘겨줄 수 있습니다:

$attributes = array(
        'id'    => 'address_info',
        'class' => 'address_info'
);

echo form_fieldset('Address Information', $attributes);
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();

/*
        Produces:

        <fieldset id="address_info" class="address_info">
                <legend>Address Information</legend>
                <p>form content here</p>
        </fieldset>
*/
form_fieldset_close([$extra = ''])
인수:
  • $extra (string) – Anything to append after the closing tag, as is
반환값:

An HTML fieldset closing tag

반환형:

문자열

닫는 </fieldset> 태그를 생성합니다. 이 함수를 사용하는 단 하나의 잇점은 태그 생성후 원하는 데이터를 그 아래 덧붙일 수 있다는 점입니다. 예를 들면

$string = '</div></div>';
echo form_fieldset_close($string);
// Would produce: </fieldset></div></div>
form_checkbox([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
인수:
  • $data (array) – Field attributes data
  • $value (string) – Field value
  • $checked (bool) – Whether to mark the checkbox as being checked
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML checkbox input tag

반환형:

문자열

체크박스를 생성합니다. 간단한 예:

echo form_checkbox('newsletter', 'accept', TRUE);
// Would produce:  <input type="checkbox" name="newsletter" value="accept" checked="checked" />

박스가 기본으로 체크되어 있을지 여부를 세 번째 파라미터로 지정할 수 있습니다.(TRUE/FALSE).

다른 폼헬퍼 함수들과 마찬가지로, 속성의 배열을 넘겨줄 수 있습니다:

$data = array(
        'name'          => 'newsletter',
        'id'            => 'newsletter',
        'value'         => 'accept',
        'checked'       => TRUE,
        'style'         => 'margin:10px'
);

echo form_checkbox($data);
// Would produce: <input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />

다른 예에서와 같이, 자바스크립 등을 추가하고 싶다면, 아래처럼 네 번째 파라미터로 넘겨주세요:

$js = 'onClick="some_function()"';
echo form_checkbox('newsletter', 'accept', TRUE, $js)

아니면 배열로 넘겨줄 수도 있습니다:

$js = array('onClick' => 'some_function();');
echo form_checkbox('newsletter', 'accept', TRUE, $js)
form_radio([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
인수:
  • $data (array) – Field attributes data
  • $value (string) – Field value
  • $checked (bool) – Whether to mark the radio button as being checked
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML radio input tag

반환형:

문자열

“라디오버튼(radio)”을 생성한다는 점을 제외하면 form_checkbox() 함수와 완전히 동일합니다.

form_label([$label_text = ''[, $id = ''[, $attributes = array()]]])
인수:
  • $label_text (string) – Text to put in the <label> tag
  • $id (string) – ID of the form element that we’re making a label for
  • $attributes (string) – HTML attributes
반환값:

An HTML field label tag

반환형:

문자열

<label>을 생성합니다. 단순 예제:

echo form_label('What is your Name', 'username');
// Would produce:  <label for="username">What is your Name</label>

다른 함수들과 마찬가지로, 속성을 설정하기 위해서 세 번째 파라미터에 연관배열을 넘겨줄 수 있습니다.

예제:

$attributes = array(
        'class' => 'mycustomclass',
        'style' => 'color: #000;'
);

echo form_label('What is your Name', 'username', $attributes);
// Would produce:  <label for="username" class="mycustomclass" style="color: #000;">What is your Name</label>
form_submit([$data = ''[, $value = ''[, $extra = '']]])
인수:
  • $data (string) – Button name
  • $value (string) – Button value
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML input submit tag

반환형:

문자열

표준 전송(submit) 버튼을 생성합니다. 단순 예제:

echo form_submit('mysubmit', 'Submit Post!');
// Would produce:  <input type="submit" name="mysubmit" value="Submit Post!" />

다른 함수들과 마찬가지로, 속성을 설정하기 위해서 첫 번째 파라미터에 연관배열을 넘겨줄 수 있습니다. 세 번째 파라미터로 자바스크립트 등을 설정할 수 있습니다.

form_reset([$data = ''[, $value = ''[, $extra = '']]])
인수:
  • $data (string) – Button name
  • $value (string) – Button value
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML input reset button tag

반환형:

문자열

리셋(reset) 버튼을 생성합니다. 함수 사용법은 form_submit()와 동일합니다.

form_button([$data = ''[, $content = ''[, $extra = '']]])
인수:
  • $data (string) – Button name
  • $content (string) – Button label
  • $extra (string) – Extra attributes to be added to the tag as is
반환값:

An HTML button tag

반환형:

문자열

표준 버튼(button)을 생성합니다. 첫 번째 파라미터는 버튼의 이름이며 두 번째 파라미터는 내용(content)입니다:

echo form_button('name','content');
// Would produce: <button name="name" type="button">Content</button>

혹은 아래와 같이 연관배열을 사용하여 각 속성을 설정하실 수도 있습니다:

$data = array(
        'name'          => 'button',
        'id'            => 'button',
        'value'         => 'true',
        'type'          => 'reset',
        'content'       => 'Reset'
);

echo form_button($data);
// Would produce: <button name="button" id="button" value="true" type="reset">Reset</button>

세 번째 파라미터로 자바스크립트 등을 추가로 설정할 수 있습니다:

$js = 'onClick="some_function()"';
echo form_button('mybutton', 'Click Me', $js);
form_close([$extra = ''])
인수:
  • $extra (string) – Anything to append after the closing tag, as is
반환값:

An HTML form closing tag

반환형:

문자열

</form>태그를 생성합니다. 이 함수를 사용하는 단 하나의 잇점은 태그 생성후 원하는 데이터를 그 아래 덧붙일 수 있다는 점입니다. 간단 예제:

$string = '</div></div>';
echo form_close($string);
// Would produce:  </form> </div></div>
set_value($field[, $default = ''[, $html_escape = TRUE]])
인수:
  • $field (string) – Field name
  • $default (string) – Default value
  • $html_escape (bool) – Whether to turn off HTML escaping of the value
반환값:

Field value

반환형:

문자열

입력폼이나 텍스트영역(textarea)에 값을 설정합니다. 첫 번째 파라미터로 반드시 필드 이름을 넘겨주어야 합니다. 옵션으로 두 번째 파라미터를 통해 기본값을 설정하실 수 있습니다. 세 번째 파라미터는 HTML 이스케이프사용을 해제할 수 있습니다. 이러한 경우는 form_input() 이 함수와 함께 사용할 수 있습니다. 이스케이프가 2번 중복되어 일어나지 않게 합니다.

예제:

<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />

위 폼은 처음 로드될 때 “0”이 설정되게 합니다.

Note

Form Validation Library 를 로드하셨다면, 그리고 폼검증 룰을 헬퍼와 함께 사용하신다면, Form Validation Libraryset_value() 함수가 호출됩니다. 그렇지 않으면, 이 함수는 필드의 값을 $_POST 에서 찾습니다.

set_select($field[, $value = ''[, $default = FALSE]])
인수:
  • $field (string) – Field name
  • $value (string) – Value to check for
  • $default (string) – Whether the value is also a default one
반환값:

‘selected’ attribute or an empty string

반환형:

문자열

<select> 메뉴를 사용할 때, 이전에 선택된 메뉴를 표시할 수 있도록 해줍니다(상태유지).

첫 번째 파라미터는 반드시 선택메뉴(select menu)의 이름을 넘겨줘야 하고, 두 번째 파라미터는 각 아이템의 값 그리고 세 번째 파라미터(옵션)은 기본값을 설정합니다(TRUE/FALSE).

예제:

<select name="myselect">
        <option value="one" <?php echo  set_select('myselect', 'one', TRUE); ?> >One</option>
        <option value="two" <?php echo  set_select('myselect', 'two'); ?> >Two</option>
        <option value="three" <?php echo  set_select('myselect', 'three'); ?> >Three</option>
</select>
set_checkbox($field[, $value = ''[, $default = FALSE]])
인수:
  • $field (string) – Field name
  • $value (string) – Value to check for
  • $default (string) – Whether the value is also a default one
반환값:

‘checked’ attribute or an empty string

반환형:

문자열

체크박스를 전송되기전 상태로 표시하도록 해줍니다(상태유지).

첫 번째 파라미터는 체크박스의 이름, 두 번째 파라미터는 값, 세 번째 파라미터(옵션)은 기본값(TRUE/FALSE)을 지정합니다.

예제:

<input type="checkbox" name="mycheck" value="1" <?php echo set_checkbox('mycheck', '1'); ?> />
<input type="checkbox" name="mycheck" value="2" <?php echo set_checkbox('mycheck', '2'); ?> />
set_radio($field[, $value = ''[, $default = FALSE]])
인수:
  • $field (string) – Field name
  • $value (string) – Value to check for
  • $default (string) – Whether the value is also a default one
반환값:

‘checked’ attribute or an empty string

반환형:

문자열

라디오 버튼을 전송되기전 상태로 표시하도록 해줍니다(상태유지) . 이 함수는 set_checkbox() 함수와 동일합니다.

예제:

<input type="radio" name="myradio" value="1" <?php echo  set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo  set_radio('myradio', '2'); ?> />

Note

폼검증 클래스를 사용하신다면, 만약 그 값이 비어있다 할지라도 set_*() 를 작동시키기 위해 항상 필드에 대해 규칙을 정하셔야 합니다. 폼검증 객체가 정의되어있는 경우, set_*() 에 대한 제어는 일반 헬퍼 함수 대신 클래스의 함수로 핸드오버됩니다.

form_error([$field = ''[, $prefix = ''[, $suffix = '']]])
인수:
  • $field (string) – Field name
  • $prefix (string) – Error opening tag
  • $suffix (string) – Error closing tag
반환값:

HTML-formatted form validation error message(s)

반환형:

문자열

폼검증라이브러리(Form Validation Library)에서 필드명과 관련된 검증에러 메세지를 반환합니다. 에러 메세지 시작과 끝부분에 추가적으로 TAG 를 추가할 수 있습니다.

예제:

// Assuming that the 'username' field value was incorrect:
echo form_error('myfield', '<div class="error">', '</div>');

// Would produce: <div class="error">Error message associated with the "username" field.</div>
validation_errors([$prefix = ''[, $suffix = '']])
인수:
  • $prefix (string) – Error opening tag
  • $suffix (string) – Error closing tag
반환값:

HTML-formatted form validation error message(s)

반환형:

문자열

form_error() 함수와 비슷합니다. 폼검증라이브러리(Form Validation Library) 에 의해 생성된 모든 폼검증에러 메세지를 반환합니다. 각각의 에러 메세지 시작과 끝부분에 TAG 를 추가할 수 있습니다.

예제:

echo validation_errors('<span class="error">', '</span>');

/*
        Would produce, e.g:

        <span class="error">The "email" field doesn't contain a valid e-mail address!</span>
        <span class="error">The "password" field doesn't match the "repeat_password" field!</span>

 */
form_prep($str)
인수:
  • $str (string) – Value to escape
반환값:

Escaped value

반환형:

문자열

폼 요소내에서 폼을 망가뜨리지 않고 따옴표(quotes:") 따위의 문자열이나 HTML 을 안전하게 사용할 수 있도록 해줍니다.

Note

이 페이지 안에 나열된 폼 헬퍼 중 어느 것을 사용한다면, 폼 값은 자동으로 준비될 것입니다. 따라서 이 함수를 호출할 필요가 없습니다. 당신이 직접 폼 태그를 생성하는 경우에만 사용하세요.

Note

이 함수는 DEPRECATED 되었습니다. 그리고 공통함수(common function) html_escape()의 Alias 입니다. 이것을 대신 사용하여 주세요.