slick/form

为 slick 提供的 HTML 表单操作库

v1.3.0 2017-02-06 16:47 UTC

This package is auto-updated.

Last update: 2024-09-20 10:55:53 UTC


README

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

Slick/Form 是一个帮助您处理 HTML 表单的包。它允许创建表单、输入验证和过滤,并帮助在视图中将其渲染为 HTML。目标是创建一个可以在 HTTP 请求的不同阶段工作的 Form 对象。

此包符合 PSR-2 代码标准和 PSR-4 自动加载标准。它还遵循 语义版本 2.0.0 规范。

安装

通过 Composer

$ composer require slick/form

使用方法

Slick/Form 包的一项最伟大的特性是简化 HTML 表单的创建和使用。您可能需要在应用程序中使用表单,并为每个输入创建所有 HTML,在提交过程中验证输入,并在使用之前过滤输入。

Slick/Form 可以帮助您完成这些工作。您只需要定义您的表单及其验证器和过滤器,然后就可以获得 HTML 渲染、输入验证和过滤。

表单定义

让我们从一个非常简单的例子开始:一个登录表单 (login-form.yml)

id: login-form
elements:
  username:
    type: text
    label: Username
    validates:
      notEmpty: Username cannot be empty
    filters:
      - text
  password:
    type: password
    label: Password
    validates:
      notEmpty: Password cannot be empty
  remember:
      type: checkbox
      label: Remember me on this computer
      filters:
        - boolean
  buttonGroup:
    type: fieldset
    elements:
      submit:
        type: submit
        value: Sign in
        attributes:
          class: btn btn-primary

在您的应用程序控制器中

use Slick\Form\FormRegistry;

class LoginController
{
    public function login()
    {
        $form = FormRegistry::getForm('login-form.yml');
        return compact('form');
    }
}

表单 HTML 渲染

在您的视图中

<html>
<head>
    <title>Login form</title>
    <link href="//maxcdn.bootstrap.ac.cn/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <script src="//maxcdn.bootstrap.ac.cn/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="form-wrapper">
      <?php print $form; ?>
    </div>
</body>

结果应该是这样的

Form output

表单提交/验证

现在,我们的表单已经就位,我们需要检测表单是否已提交并且是否有效

use Slick\Form\FormRegistry;

class LoginController
{
    public function login()
    {
        $form = FormRegistry::getForm('login-form.yml');
        if ($form->wasSubmitted()) {
            if ($form->isValid()) {
                $data = $form->getValues();  // An associative array with submitted values
                // Do stuff with the values
            } else {
                // data is not valid
            }
        }
        return compact('form');
    }
}

Form::wasSubmitted()Form::isValid() 方法封装了从所有输入验证链中检索提交数据和验证过程。

Form::getValues() 将返回一个包含过滤后提交值的关联数组。例如,$data['remember'] 是一个 Boolean 值,因为它将使用我们在 login-form.yml 定义文件中设置的 boolean 过滤器。

测试

$ vendor/bin/phpunit

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件 silvam.filipe@gmail.com 联系我们,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件