wscore/ask

一个简单的HTML表单和验证器问卷构建器。

1.1.1 2020-06-24 03:31 UTC

This package is not auto-updated.

Last update: 2024-09-21 10:33:39 UTC


README

一个简单的HTML表单和验证器问卷构建器。

概述

安装

composer require wscore/ask

演示

要查看演示,打开终端并...

$ git clone https://github.com/WScore/AskQuestions
$ cd AskQuestions
$ composer install
$ cd demo
$ php -S localhost:8000

...然后在浏览器中查看 localhost:8000

示例代码

要使用 WScore\Ask 组件,首先定义 AskModel

定义问题

function buildAskForms() {
    $ask = new \WScore\Ask\AskModel();

    $ask->addText('name', 'Your Name')
        ->setPlaceholder('Mr. Test Taro');
}

HTML表单

要在HTML文件中显示表单,

$ask = buildAskForms();
$forms = $ask->buildForm();

如果你使用Bootstrap 4,可能需要为输入和标签设置默认类。

$forms->setFormClass('form-control');
$forms->setLabelClass('form-label');

然后,在HTML表单中输出HTML表单,如下所示:

<form action="..." method="post">
    <?php $element = $forms->getElement('name'); ?>
    <?= $element->makeLabel(); ?>
    <?= $element->makeForm(); ?>

demo form sample

验证输入

要验证输入,

$ask = buildAskForms();
$validator = $ask->buildValidator($_POST);
$results = $validator->getResults();

// show some message.
if ($validator->isValid()) {
    echo "<div class='alert alert-success'>Success!!!</div>";
} else {
    echo "<div class='alert alert-danger'>Error ???</div>";
}

然后,获取每个值的验证结果,如下所示:

<table class="table">
    <?php $result = $validator->getResult('name') ?>
    <tr>
        <th><?= $result->label(); ?></th>
        <td><?= $result->showValue('<br>'); ?></td>
        <?php
            if (!$result->isValid()) {
                echo "<p class='error text-danger' >{$result->getMessage()}</p>";
            }
        ?></td>
    </tr>
    <?php endforeach; ?>
</table>

高级

更多验证

默认验证只包含必填项检查。

使用闭包创建一个精细的验证方法;

$ask->setValidator(function (Validation $validation) {
    $name = $valication->getResult('name');
    if (strlen($name) < 3) {
        $validation->setError('name', $name, 'must be longer than 2 characters.');
    }
});

待办事项

  • 国际化错误信息。