- یکشنبه 26 مهر 1405 ساعت 13:00
- 3.1.9
- کامل شده
- منقضی شده
فایل هلپرفانکشن Form حاوی فانکشنهایی است که به شما در کار با فرمها را میدهد.
نحوه بارگذاری این هلپرفانکشن
با کد زیر میتوانید این هلپرفانکشن را لود کنید:
$this->load->helper('form');
Escape کردن مقادیر فیلدها
گاهی ممکن است لازم باشد از کدهای HTML و کاراکترهایی مانند نقلقولها در عناصر فرم استفاده کنید. برای انجام این کار به صورت امن، باید از فانکشن عمومی html_escape() استفاده کنید.
به مثال زیر توجه کنید:
$string = 'Here is a string containing "quoted" text.';
<input type="text" name="myfield" value="<?php echo $string; ?>">
از آنجایی که استرینگ فوق دارای مجموعهای از نقلقولها است، این کد باعث خرابی عنصر فرم میشود. در input بالا مقدار اتریبیوت value برابر Here is a string containing خواهد بود. فانکشن html_escape() کاراکترهای خاص HTML را تبدیل میکند، بنابراین میتوانند به صورت امن استفاده شوند:
$string = 'Here is a string containing "quoted" text.';
<input type="text" name="myfield" value="<?php echo html_escape($string); ?>">
توجه
اگر از هر کدام از هلپرفانکشنهای Form که در این پست آورده شدهاند، استفاده کنید، مقادیر فرم به صورت خودکار escape خواهند شد، بنابراین نیازی به فراخوانی این فانکشن نخواهید داشت. تنها در صورتی از این فانکشن استفاده کنید که عناصر فرم شخصی خودتان را ساخته و استفاده میکنید.
فانکشنهای موجود
با لود این هلپر، فانکشنهای زیر در دسترس خواهند بود:
form_open([$action = ''[, $attributes = ''[, $hidden = array()]]]) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ آغازین یک فرم به همراه فیلدهای hidden |
| نوع مقدار بازگشتی | استرینگ |
بر اساس URL ساخته شده از تنظیمات فایل config، یک تگ آغازین فرم (opening form tag) میسازد. امکان اختیاری دیگری که این فانکشن ارائه میدهد، افزودن اتریبیوتهای فرم و فیلدهای input از نوع hidden است و همیشه اتریبیون accept-charset را مطابق با مقدار charset در فایل config اضافه میکند.
مزیت اصلی استفاده از این تگ به جای هاردکد نوشتن کدهای HTML، این است که استفاده از این تگ، در صورت تغییر URLها امکان انتقالپذیری بیشتری به سایت شما میدهد.
به مثال ساده زیر توجه کنید:
echo form_open('email/send');
مثال بالا یک فرم ایجاد میکند که به URL پایه شما به اضافه سگمنت "email/send" در URL اشاره دارد، مانند این:
افزودن اتریبیوت
فیلدهای hidden با پاس دادن یک آرایه انجمنی به پارامتر سوم، میتوانند به فرم اضافه شوند، مانند این:
$hidden = array('username' => 'Joe', 'member_id' => '234');
echo form_open('email/send', '', $hidden);
برای skip کردن پارامتر دوم، به آن یک مقدار false (مثلا استرینگ خالی یا آرایه خالی) بدهید.
مثال بالا فرمی مشابه زیر تولید میکند:
<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()]]]) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ آغازین یک فرم به همراه فیلدهای hidden |
| نوع مقدار بازگشتی | استرینگ |
این فانکشن کاملا با form_open() یکسان است، تنها تفاوتی که دارد این است که این فانکشن یک اتریبیوت multipart (یعنی enctype="multipart/form-data") به فرم اضافه میکند، که هنگامی که میخواهید با استفاده از فرم خود فایل آپلود کنید، استفاده از این اتریبیوت ضروری است.
form_hidden($name[, $value = '']) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ HTML مربوط به فیلد input از نوع hidden |
| نوع مقدار بازگشتی | استرینگ |
امکان ساخت فیلدهای hidden را فراهم میآورد. با استفاده از پارامترها نیز میتوانید مقدار اتریبیوتهای مشخص شده را تعیین کنید:
form_hidden('username', 'johndoe');
// Would produce: <input type="hidden" name="username" value="johndoe" />
و یا با ارسال یک آرایه انجمنی به این فانکشن، با یک بار فراخوانی این فانکشن میتوانید چندین فیلد hidden ایجاد کنید:
$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" />
*/
همچنین میتوانید یک آرایه انجمنی را به value فیلد پاس دهید:
$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" />
*/
اگر میخواهید اتریبیوتهای بیشتری را به فیلد hidden خود اضافه کنید، کافی است اتریبیوتها را به صورت آرایه انجمنی به پارامتر اول فانکشن پاس دهید:
$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 = '']]]) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ HTML مربوط به فیلد input |
| نوع مقدار بازگشتی | استرینگ |
با استفاده از این فانکشن میتوان یک فیلد input استاندارد از نوع text تولید کرد. با حداقل پاس دادن نام و مقدار فیلد به دو پارامتر اول و دوم میتوانید فیلد مورد نظر خود را بسازید:
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 id="username" style="width: 50%;" maxlength="100" name="username" size="50" type="text" value="johndoe" />
*/
اگر میخواهید دادههای بیشتری مانند کدهای جاوااسکریپت در فیلد خود داشته باشید، داده مورد نظر خود را به شکل یک استرینگ به پارامتر سوم این فانکشن پاس دهید:
$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 = '']]]) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ مربوط به فیلد input از نوع password |
| نوع مقدار بازگشتی | استرینگ |
همه چیز این فانکشن مشابه فانکشن form_input() است، تنها تفاوت آن این است که type فیلد تولید شده توسط این فانکشن password است.
form_upload([$data = ''[, $value = ''[, $extra = '']]]) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ مربوط به فیلد input از نوع file که برای آپلود فایل استفاده میشود |
| نوع مقدار بازگشتی | استرینگ |
همه چیز این فانکشن مشابه فانکشن form_input() است، تنها تفاوت آن این است که type فیلد تولید شده توسط این فانکشن file است که به این فیلد امکان استفاده برای آپلود فایل را میدهد.
form_textarea([$data = ''[, $value = ''[, $extra = '']]]) |
|
| پارامترها |
|
| مقدار بازگشتی | تگ مربوط به فیلد textarea |
| نوع مقدار بازگشتی | استرینگ |
form_input() است، تنها تفاوت آن این است که فیلد تولید شده توسط این فانکشن با تگ textarea است.
توجه
به جای اتریبیوتهای maxlength و size در مثال بالا، از cols و rows استفاده کنید.
اصطلاحات مرتبط در واژهنامه: پروتکل انتقال ابرمتن