폼(Form Helper)¶
폼 헬퍼는 폼조작에 필요한 함수들을 제공합니다.
필드 값을 이스케이프 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는 폼에서 파일을 업로드 해야할 때 필요한 속성입니다.
인수: - $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
위 예제에서 설정하신 maxlength 와 size 속성대신, rows 와 cols 를 설정하셔야 합니다.
- 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()와 동일합니다.
인수: - $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 Library 의 set_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 입니다. 이것을 대신 사용하여 주세요.