yiisoft/form-model

为表单模型提供基础,并帮助填充、验证和显示它们。

1.0.1 2024-09-13 07:16 UTC

This package is auto-updated.

Last update: 2024-09-22 08:43:15 UTC


README

Yii

Yii 表单模型


Latest Stable Version Total Downloads Build status Code Coverage Mutation testing badge static analysis type-coverage psalm-level

该包为表单模型提供基础,并帮助填充数据、验证它们并在视图中显示它们。

要求

  • PHP 8.1 或更高版本。
  • mbstring PHP 扩展。

安装

可以使用Composer安装此包。

composer require yiisoft/form-model

通用用法

定义一个表单模型

use Yiisoft\FormModel\Attribute\Safe;
use Yiisoft\FormModel\FormModel;
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Length;
use Yiisoft\Validator\Rule\Required;

final class LoginForm extends FormModel
{
    #[Label('Your login')]
    #[Required]
    #[Length(min: 4, max: 40, skipOnEmpty: true)]
    #[Email(skipOnEmpty: true)]
    private ?string $login = null;

    #[Label('Your password')]
    #[Required]
    #[Length(min: 8, skipOnEmpty: true)]
    private ?string $password = null;

    #[Label('Remember me for 1 week')]
    #[Safe]
    private bool $rememberMe = false;
}

使用表单填充器填充数据并验证

use Psr\Http\Message\RequestInterface;
use Yiisoft\FormModel\FormHydrator;
use Yiisoft\FormModel\FormModel;

final class AuthController 
{
    public function login(RequestInterface $request, FormHydrator $formHydrator): ResponseInterface
    {
        $formModel = new LoginForm();
        $errors = [];
        if ($formHydrator->populateFromPostAndValidate($formModel, $request)) {
            $errors = $formModel->getValidationResult()->getErrorMessagesIndexedByProperty();
        }
        
        // You can pass $formModel and $errors to the view now.
    }
}

使用视图中的字段显示它们

use Yiisoft\FormModel\Field;
use Yiisoft\FormModel\FormModel;

echo Field::text($formModel, 'login');
echo Field::password($formModel, 'password');
echo Field::checkbox($formModel, 'rememberMe');

// ...

文档

如果您需要帮助或有疑问,Yii 论坛是寻求帮助的好地方。您还可以查看其他Yii 社区资源

许可证

Yii 表单模型是自由软件。它根据BSD许可证发布。有关更多信息,请参阅LICENSE

Yii 软件维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack