คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


Form Helper

ไฟล์ Form Helper จะมีฟังก์ชันช่วยทำงานกับฟอร์ม

เรียกใช้งานผู้ช่วยนี้

ผู้ช่วยนี้จะถูกเรียกใช้งานได้จากโค้ดต่อไปนี้

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

มีฟังก์ชันที่ใช้งานได้ดังนี้

form_open()

สร้างแท็กเปิดฟอร์มซึ่งอิงกับ URL ฐานซึ่งสร้างจากค่าปรับแต่งของคุณ โดยยอมให้คุณสามารถใส่ค่าฟอร์มและใส่ค่านำเข้าแบบซ่อนได้ (hidden input field)

สำหรับประโยชน์หลักในการใช้สิ่งนี้แทนใช้การเขียนโค้ดเข้าไปโดยตรงเองด้วย HTML คือมันทำให้ไซ์ของคุณเคลื่อนย้ายได้สะดวกเมื่อเกิดการเปลี่ยนแปลงกับ URL

ตัวอย่างการใช้งาน

echo form_open('email/send');

ตัวอย่างด้านบนจะสร้างฟอร์มจากจุดนั้นโดยขึ้นอยู่กับฐาน URL (base url) รวมกับ "email/send" ส่วนของ URI แบบนี้

<form method="post" action="http:/example.com/index.php/email/send" />

เพิ่มคุณลักษณะ

คุณลักษณะสามารถเพิ่มได้โดยใช้อาเรย์แบบเชื่อมโยงไปยังพารามิเตอร์ที่สองแบบนี้

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

echo form_open('email/send', $attributes);

ตัวอย่างด้านบนจะสร้างผลลัพธ์แบบนี้

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

เพิ่มฟิลด์นำเข้าแบบซ่อน (Hidden Input Field)

ฟิลด์ซ่อนสามารถถูกเพิ่มไปแบบอาเรย์แบบซ่อนได้ในพารามิเตอร์ที่สามแบบนี้

$hidden = array('username' => 'Joe', 'member_id' => '234');

echo form_open('email/send', '', $hidden);

ตัวอย่างด้านบนจะสร้างผลลัพธ์แบบนี้

<form method="post" 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()

ฟังก์ชันนี้มีลักษณะเดียวกันกับแท็ก form_open() ด้านบนยกเว้นมันเพิ่มคุณลักษณะแบบหลายส่วนเข้าไป ซึ่งจำเป็นถ้าคุณต้องการใช้ฟอร์มที่มีการอัพโหลดไฟล์

form_hidden()

ยอมให้คุณสร้างฟิลด์ซ่อน คุณสามารถใส่ชื่อและค่าผลลัพธ์แบบสติรงลงไปเพื่อสร้างหนึ่งฟิลด์ได้

form_hidden('username', 'johndoe');

// จะได้ผลลัพธ์เป็น

<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" />

form_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" id="username" value="johndoe" maxlength="100" size="50" style="width:50%" />

ถ้าคุณต้องการใส่ข้อมูลเพิ่มเติมอย่างเช่น JavaScript คุณสามารถส่งค่าแบบสตริงไปยังพารามิเตอร์ที่สามได้

$js = 'onClick="some_function()"';

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

form_password()

ฟังก์ชันนี้เหมือนกันในทุกๆด้านกับฟังก์ชัน form_input() ด้านบนยกเว้นว่าตั้งประเภทเป็น "password"

form_upload()

ฟังก์ชันนี้เหมือนกันในทุกๆด้านกับฟังก์ชัน form_input() ด้านบนยกเว้นว่าตั้งประเภทเป็น "file" ซึ่งยอมให้อัพโหลดไฟล์ได้

form_textarea()

ฟังก์ชันนี้เหมือนกันในทุกๆด้านกับฟังก์ชัน form_input() ด้านบนยกเว้นมันจะสร้างเป็น "textarea" แทน ข้อสังเกตุ: แทนที่จะกำหนดคุณลักษณะ "maxlength" และ "size" แบบตัวอย่างด้านบนคุณจะต้องกำหนด "rows" และ "cols" แทน

form_dropdown()

ยอมให้คุณสร้างฟิลด์แบบตกลงอย่างรวดเร็ว (drop-down field) โดยพารามิเตอร์แรกจะต้องใส่ค่าชื่อของฟิลด์ พารามิเตอร์ที่สองจะต้องใส่อาเรย์แบบเชื่อมโยงซึ่งเป็นทางเลือก และพารามิเตอร์ที่สามจะใส่ค่าที่จะถูกเลือก คุณสามารถส่งอาเรย์ไปยังพารามิเตอร์ที่สามได้และ CodeIgniter จะสร้างการเลือกแบบหลายอันสำหรับคุณ ตัวอย่างเช่น

$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> มีข้อมูลเพิ่มเติมอย่างเช่น JavaScript คุณสามารถส่งค่าสตริงไปยังพารามิเตอร์ที่สี่

$js = 'onChange="some_function()"';

echo form_dropdown('shirts', $options, 'large', $js);

ถ้าอาเรย์ที่ถูกส่งไปยัง $options เป็นอาเรย์หลายมิติ form_dropdown() จะแสดงเป็น <optgroup> พร้อมกับกุญแจอาเรย์เป็นฉลาก (label)

form_multiselect()

ยอมให้คุณสร้างฟิลด์เลือกได้หลายตามมาตรฐาน โดยพารามิเตอร์ตัวแรกจะใส่ชื่อของฟิลด์ พารามิเตอร์ที่สองจะประกอบด้วยอาเรย์แบบเชื่อมโยงซึ่งเป็นทางเลือก และพารามิเตอร์ที่สามจะประกอบด้วยค่าหนึ่งค่าหรือหลายค่าที่คุณต้องการให้ถูกเลือก พารามิเตอร์ที่ถูกใช้จะเหมือนกับที่ใช้กับ form_dropdown() ด้านบนยกเว้นว่าชื่อของฟิลด์จำเป็นต้องใช้เป็นอาเรย์ POST แบบนี้เป็นต้น foo[]

form_fieldset()

ยอมให้คุณสร้างฟิลด์ 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()

สร้างแท็กปิด </fieldset> ความได้เปรียบเพียงอย่างเดียวที่จะใช้ฟังก์ชันนี้คือมันยอมให้คุณใส่ข้อมูลต่อจากแท็กนั้นได้ ตัวอย่างเช่น

$string = "</div></div>";

echo fieldset_close($string);

// Would produce:
</fieldset>
</div></div>

form_checkbox()

ให้คุณสร้างฟิลด์กล่องเช็ค ตัวอย่างเช่น

echo form_checkbox('newsletter', 'accept', TRUE);

// จะให้ผลลัพธ์เป็น

<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" />

เหมือนฟังก์ชันตัวอื่นถ้าคุณต้องการใส่ข้อมูลเพิ่มเติมอย่างเช่น JavaScript คุณสามารถใส่มันเป็นสตริงในพารามิเตอร์ที่สี่

$js = 'onClick="some_function()"';

echo form_checkbox('newsletter', 'accept', TRUE, $js)

form_radio()

ฟังก์ชันนี้เหมือนกับฟังก์ชัน form_checkbox() ด้านบนทุกประการยกเว้นว่าจะตั้งค่าประเภทเป็น "radio"

form_submit()

ให้คุณสร้างปุ่มส่งข้อมูล ตัวอย่างเช่น

echo form_submit('mysubmit', 'Submit Post!');

// Would produce:

<input type="submit" name="mysubmit" value="Submit Post!" />

เหมือนกับฟังก์ชันอื่นๆคุณสามารถใส่อาเรย์แบบเชื่อมโยงไปยังพารามิเตอร์แรกถ้าคุณต้องการตั้งค่าคุณลักษณะ และพารามิเตอร์ที่สามยอมให้คุณเพิ่มข้อมูลเเพิ่มเติมอย่างเช่น JavaScript

form_label()

ยอมให้คุณสร้าง <label>ตัวอย่างเช่น

echo form_label('What is your Name', 'username');

// จะได้ผลลัพธ์
<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_reset()

ยอมให้คุณสร้างปุ่มตั้งค่าใหม่วิธีใช้เหมือนกับ form_submit()

form_button()

ยอมให้คุณสร้างปุ่มธรรมดาตามมาตรฐาน คุณสามารถใส่ชื่อของปุ่มกับเนื้อหาของมันได้จากพารามิเตอร์ที่หนึ่งและสอง ตามลำดับ

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>
ถ้าคุณต้องการใส่ข้อมูลเพิ่มเติมอย่างเช่น JavaScript คุณสามารถส่งค่าสตริงไปยังพารามิเตอร์ที่สามได้ $js = 'onClick="some_function()"';

echo form_button('mybutton', 'Click Me', $js);

form_close()

สร้างแท็กปิดฟอร์ม </form> ความได้เปรียบเพียงอย่างเดียวที่จะใช้ฟังก์ชันนี้คือมันยอมให้คุณใส่ข้อมูลต่อจากแท็กนั้นได้ ตัวอย่างเช่น

$string = "</div></div>";

echo form_close($string);

// Would produce:

</form>
</div></div>

form_prep()

ทำให้คุณปลอดภัยจากการใช้ HTML และตัวอักษรอย่างเช่น quotes (") ภายในฟอร์มโดยไม่ทำให้มันทำลายฟอร์มของคุณ พิจารณาตัวอย่างนี้

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

<input type="text" name="myform" value="$string" />

สตริงด้านบนจะทำลายฟอร์มของคุณ ฟังก์ชัน form_prep จะเปลี่ยน HTML เป็นในแบบที่ปลอดภัย

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

ข้อสังเกตุ: ถ้าคุณใช้ฟังก์ชันใน form helper ที่อยู่ในหน้านี้ค่าของฟอร์มเหล่านั้นจะถูกใช้ฟังก์ชันนี้อย่างอัตโนมัติอยู่แล้ว ดังนั้นไม่จำเป็นจะต้องเรียกฟังก์ชันนี้อีก ใช้มันเฉพาะถ้าคุณสร้างองค์ประกอบด้วยตนเอง

set_value()

อนุญาตให้คุณตั้งค่าของฟอร์มแบบอินพุต (input tag) หรือ textarea คุณต้องใส่ชื่อฟิลด์ไปยังฟังก์ชันแรกและพารามิเตอร์ที่สอง(เป็นทางเลือก) ยอมให้คุณตั้งค่าปกติสำหรับฟอร์มนั้น ตัวอย่างเช่น

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

ค่าด้านบนจะถูกแสดงเป็น "0" เมื่อถูกโหลดขึ้นมาครั้งแรก

set_select()

ถ้าคุณใช้เมนู <select> ฟังก์ชันนี้อนุญาตให้คุณแสดงเมนูที่ถูกเลือก พารามิเตอร์แรกจะต้องใส่ชื่อของเมนู select พารามิเตอร์ที่สองจะต้องใส่ค่าของรายการนั้นๆและพารามิเตอร์ที่สาม (เป็นทางเลือก) จะให้คุณตั้งค่าว่าค่านี้เป็นตัวที่ถูกเลือกหรือไม่ (ใช้ตรรกะ TRUE/FALSE).

Example:

<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()

อนุญาตให้คุณแสดงสถานะของช่องติกที่ถูกส่งข้อมูลไปได้ โดยพารามิเตอร์ตัวแรกจะต้องเป็นชื่อของกล่องเช็ค พารามิเตอร์ที่สองจะต้องใส่ค่า และพารามิเตอร์ที่สามจะยอมให้คุณตั้งค่ารายการนั้นเป็นค่าทั่วไป (ใช้ตรรกะ 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()

อนุญาตให้คุณแสดงสถานะของปุ่ม radio เมื่อถูกส่งค่าไป ฟังก์ชันนี้เหมือนกันกับฟังก์ชัน 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'); ?> />