Tham khảo XoopsForm API
Hoàn thành tài liệu API cho hệ thống tạo biểu mẫu XOOPS.
Hệ thống phân cấp lớp
Phần tiêu đề “Hệ thống phân cấp lớp”classDiagram class XoopsForm { <<abstract>> #string $title #string $name #string $action #string $method #array $elements #string $extra #bool $required +addElement(element, required) +getElements() +getElement(name) +setExtra(extra) +render() +display() }
class XoopsThemeForm { +render() }
class XoopsSimpleForm { +render() }
class XoopsTableForm { +render() }
XoopsForm <|-- XoopsThemeForm XoopsForm <|-- XoopsSimpleForm XoopsForm <|-- XoopsTableForm
class XoopsFormElement { <<abstract>> #string $name #string $caption #string $description #string $extra #bool $required +getName() +getCaption() +setCaption(caption) +getDescription() +setDescription(desc) +isRequired() +setRequired(required) +render() }
XoopsFormElement <|-- XoopsFormText XoopsFormElement <|-- XoopsFormTextArea XoopsFormElement <|-- XoopsFormSelect XoopsFormElement <|-- XoopsFormCheckBox XoopsFormElement <|-- XoopsFormRadio XoopsFormElement <|-- XoopsFormButton XoopsFormElement <|-- XoopsFormFile XoopsFormElement <|-- XoopsFormHidden XoopsFormElement <|-- XoopsFormLabel XoopsFormElement <|-- XoopsFormPassword XoopsFormElement <|-- XoopsFormElementTrayXoopsForm (Cơ sở trừu tượng)
Phần tiêu đề “XoopsForm (Cơ sở trừu tượng)”Trình xây dựng
Phần tiêu đề “Trình xây dựng”public function __construct( string $title, // Form title string $name, // Form name attribute string $action, // Form action URL string $method = 'post', // HTTP method bool $addToken = false // Add CSRF token)Phương pháp
Phần tiêu đề “Phương pháp”| Phương pháp | Thông số | Trả về | Mô tả |
|---|---|---|---|
addElement | XoopsFormElement $element, bool $required = false | void | Thêm phần tử vào biểu mẫu |
getElements | - | array | Nhận tất cả các yếu tố |
getElement | string $name | `XoopsFormElement | null` |
setExtra | string $extra | void | Đặt thêm thuộc tính HTML |
getExtra | - | string | Nhận thêm thuộc tính |
getTitle | - | string | Nhận tiêu đề biểu mẫu |
setTitle | string $title | void | Đặt tiêu đề biểu mẫu |
getName | - | string | Lấy tên mẫu |
getAction | - | string | Nhận hành động URL |
render | - | string | Kết xuất dạng HTML |
display | - | void | Biểu mẫu kết xuất Echo |
insertBreak | string $extra = '' | void | Chèn ngắt trực quan |
setRequired | XoopsFormElement $element | void | Đánh dấu phần tử bắt buộc |
XoopsThemeForm
Phần tiêu đề “XoopsThemeForm”Biểu mẫu được sử dụng phổ biến nhất là class, hiển thị với kiểu dáng nhận biết chủ đề.
Cách sử dụng
Phần tiêu đề “Cách sử dụng”<?php$form = new XoopsThemeForm( 'User Registration', 'registration_form', 'register.php', 'post', true // Include CSRF token);
$form->addElement(new XoopsFormText('Username', 'uname', 25, 255, ''), true);$form->addElement(new XoopsFormPassword('Password', 'pass', 25, 255), true);$form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
echo $form->render();Kết xuất được hiển thị
Phần tiêu đề “Kết xuất được hiển thị”<form name="registration_form" action="register.php" method="post" enctype="application/x-www-form-urlencoded"> <table class="outer" cellspacing="1"> <tr><th colspan="2">User Registration</th></tr> <tr class="odd"> <td class="head">Username <span class="required">*</span></td> <td class="even"> <input type="text" name="uname" size="25" maxlength="255" value=""> </td> </tr> <!-- ... more fields ... --> </table> <input type="hidden" name="XOOPS_TOKEN_REQUEST" value="..."></form>Các phần tử của biểu mẫu
Phần tiêu đề “Các phần tử của biểu mẫu”XoopsFormText
Phần tiêu đề “XoopsFormText”Nhập văn bản một dòng.
$text = new XoopsFormText( string $caption, // Label text string $name, // Input name int $size, // Display width int $maxlength, // Max characters mixed $value = '' // Default value);
// Methods$text->getValue();$text->setValue($value);$text->getSize();$text->getMaxlength();XoopsFormTextArea
Phần tiêu đề “XoopsFormTextArea”Nhập văn bản nhiều dòng.
$textarea = new XoopsFormTextArea( string $caption, string $name, mixed $value = '', int $rows = 5, int $cols = 50);
// Methods$textarea->getRows();$textarea->getCols();XoopsFormSelect
Phần tiêu đề “XoopsFormSelect”Thả xuống hoặc chọn nhiều.
$select = new XoopsFormSelect( string $caption, string $name, mixed $value = null, int $size = 1, // 1 = dropdown, >1 = listbox bool $multiple = false);
// Methods$select->addOption(mixed $value, string $name = '');$select->addOptionArray(array $options);$select->getOptions();$select->getValue();$select->isMultiple();XoopsFormCheckBox
Phần tiêu đề “XoopsFormCheckBox”Hộp kiểm hoặc nhóm hộp kiểm.
$checkbox = new XoopsFormCheckBox( string $caption, string $name, mixed $value = null, string $delimeter = ' ');
// Methods$checkbox->addOption(mixed $value, string $name = '');$checkbox->addOptionArray(array $options);$checkbox->getValue();XoopsFormRadio
Phần tiêu đề “XoopsFormRadio”Nhóm nút radio.
$radio = new XoopsFormRadio( string $caption, string $name, mixed $value = null, string $delimeter = ' ');
// Methods$radio->addOption(mixed $value, string $name = '');$radio->addOptionArray(array $options);XoopsFormButton
Phần tiêu đề “XoopsFormButton”Nút gửi, đặt lại hoặc tùy chỉnh.
$button = new XoopsFormButton( string $caption, string $name, string $value = '', string $type = 'button' // 'submit', 'reset', 'button');XoopsFormFile
Phần tiêu đề “XoopsFormFile”Đầu vào tải lên tập tin.
$file = new XoopsFormFile( string $caption, string $name, int $maxFileSize = 0);
// Methods$file->getMaxFileSize();$file->setMaxFileSize(int $size);XoopsFormẨn
Phần tiêu đề “XoopsFormẨn”Trường nhập ẩn.
$hidden = new XoopsFormHidden( string $name, mixed $value);XoopsFormHiddenToken
Phần tiêu đề “XoopsFormHiddenToken”Mã thông báo bảo vệ CSRF.
$token = new XoopsFormHiddenToken( string $name = 'XOOPS_TOKEN_REQUEST');XoopsFormLabel
Phần tiêu đề “XoopsFormLabel”Nhãn chỉ hiển thị (không phải đầu vào).
$label = new XoopsFormLabel( string $caption, string $value);XoopsFormMật khẩu
Phần tiêu đề “XoopsFormMật khẩu”Trường nhập mật khẩu.
$password = new XoopsFormPassword( string $caption, string $name, int $size, int $maxlength, mixed $value = '');XoopsFormElementTray
Phần tiêu đề “XoopsFormElementTray”Nhóm nhiều phần tử lại với nhau.
$tray = new XoopsFormElementTray( string $caption, string $delimeter = ' ');
// Methods$tray->addElement(XoopsFormElement $element, bool $required = false);$tray->getElements();Sơ đồ luồng biểu mẫu
Phần tiêu đề “Sơ đồ luồng biểu mẫu”sequenceDiagram participant User participant Browser participant Form participant Security participant Handler participant Database
User->>Browser: Fill form Browser->>Form: Submit POST Form->>Security: Validate CSRF token
alt Token Invalid Security-->>Browser: Error: Invalid token Browser-->>User: Show error else Token Valid Security->>Handler: Process data Handler->>Handler: Validate input
alt Validation Failed Handler-->>Browser: Show form with errors Browser-->>User: Display errors else Validation Passed Handler->>Database: Save data Database-->>Handler: Success Handler-->>Browser: Redirect Browser-->>User: Success message end endVí dụ hoàn chỉnh
Phần tiêu đề “Ví dụ hoàn chỉnh”<?phprequire_once __DIR__ . '/mainfile.php';
use Xmf\Request;
$helper = \XoopsModules\MyModule\Helper::getInstance();$itemHandler = $helper->getHandler('Item');
// Process form submissionif (Request::hasVar('submit', 'POST')) { // Verify CSRF token if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header('form.php', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); }
// Get validated input $title = Request::getString('title', '', 'POST'); $content = Request::getText('content', '', 'POST'); $categoryId = Request::getInt('category_id', 0, 'POST'); $status = Request::getString('status', 'draft', 'POST');
// Create and populate object $item = $itemHandler->create(); $item->setVars([ 'title' => $title, 'content' => $content, 'category_id' => $categoryId, 'status' => $status, 'created' => time(), 'uid' => $GLOBALS['xoopsUser']->getVar('uid') ]);
// Save if ($itemHandler->insert($item)) { redirect_header('index.php', 2, _MD_MYMODULE_SAVED); } else { $error = _MD_MYMODULE_ERROR_SAVING; }}
// Build form$form = new XoopsThemeForm(_MD_MYMODULE_ADD_ITEM, 'itemform', 'form.php', 'post', true);
// Title field$titleElement = new XoopsFormText(_MD_MYMODULE_TITLE, 'title', 50, 255, $title ?? '');$titleElement->setDescription(_MD_MYMODULE_TITLE_DESC);$form->addElement($titleElement, true);
// Category dropdown$categoryHandler = $helper->getHandler('Category');$categories = $categoryHandler->getList();$categorySelect = new XoopsFormSelect(_MD_MYMODULE_CATEGORY, 'category_id', $categoryId ?? 0);$categorySelect->addOptionArray($categories);$form->addElement($categorySelect, true);
// Content textarea with editor$editorConfigs = [ 'name' => 'content', 'value' => $content ?? '', 'rows' => 15, 'cols' => 60, 'width' => '100%', 'height' => '400px',];$form->addElement(new XoopsFormEditor(_MD_MYMODULE_CONTENT, 'content', $editorConfigs));
// Status radio buttons$statusRadio = new XoopsFormRadio(_MD_MYMODULE_STATUS, 'status', $status ?? 'draft');$statusRadio->addOptionArray([ 'draft' => _MD_MYMODULE_DRAFT, 'published' => _MD_MYMODULE_PUBLISHED, 'archived' => _MD_MYMODULE_ARCHIVED]);$form->addElement($statusRadio);
// Submit button$buttonTray = new XoopsFormElementTray('', ' ');$buttonTray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));$buttonTray->addElement(new XoopsFormButton('', 'reset', _CANCEL, 'reset'));$form->addElement($buttonTray);
// Displayrequire_once XOOPS_ROOT_PATH . '/header.php';
if (!empty($error)) { echo "<div class='errorMsg'>$error</div>";}
$form->display();
require_once XOOPS_ROOT_PATH . '/footer.php';Tài liệu liên quan
Phần tiêu đề “Tài liệu liên quan”- XoopsObject API
- Hướng dẫn biểu mẫu
- Bảo vệ CSRF
#xoops #api #forms #xoopsform #reference