omerucel/form

此包最新版本(1.0.0)没有提供许可证信息。

1.0.0 2017-07-13 13:47 UTC

This package is not auto-updated.

Last update: 2024-09-21 15:53:28 UTC


README

Build Status

关于

这个库为表单验证过程提供了一个干净且易于使用的解决方案。它使用respect/validation包进行验证。

Composer

{
    "require": {
        "omerucel/form": "1.0.0"
    }
}

使用方法

有两种使用方式。第一种是扩展OU\Form\Form类,这是使用此库的一种干净方式。

<?php

namespace {

    use OU\Form\Field;
    use OU\Form\Message\DangerMessage;
    use OU\Form\Message\SuccessMessage;
    use Respect\Validation\Rules;
    use Symfony\Component\HttpFoundation\Request;

    $request = Request::createFromGlobals();
    $form = new RegistrationForm($request);
    if ($form->validate()) {
        // Complete form action
        $form->setCompleted(true);
        $form->addMessage(new SuccessMessage('User created.'));
    } else {
        $form->addMessage(new DangerMessage('Please try again.'));
    }
    
    class RegistrationForm extends OU\Form\Form
    {
        public $email;
        public $password;
        
        public function __construct(Request $request)
        {
            $this->email = new Field($request->get('email'));
            $this->email->addRule(new Rules\Email(), new DangerMessage('Invalid email address.'));
            $this->password = new Field($request->get('password'));
            $this->password->addRule(new Rules\NotEmpty(), new DangerMessage('Password is empty.'));
            $this->password->addRule(new Rules\Length(8), new DangerMessage('Password is too short.'));
        }
    }
}

另一种方式是直接使用OU\Form\Form类。

<?php

namespace {

    use OU\Form\Form;
    use OU\Form\Field;
    use OU\Form\Message\DangerMessage;
    use OU\Form\Message\SuccessMessage;
    use Respect\Validation\Rules;
    use Symfony\Component\HttpFoundation\Request;

    $request = Request::createFromGlobals();
    $form = new Form();
    $form->email = new Field($request->get('email'));
    $form->email->addRule(new Rules\Email(), new DangerMessage('Invalid email address.'));
    $form->password = new Field($request->get('password'));
    $form->password->addRule(new Rules\NotEmpty(), new DangerMessage('Password is empty.'));
    $form->password->addRule(new Rules\Length(8), new DangerMessage('Password is too short.'));
    
    if ($form->validate()) {
        $form->setCompleted(true);
        $form->addMessage(new SuccessMessage('User created.'));
    } else {
        $form->addMessage(new DangerMessage('Please try again.'));
    }
}

你可以扩展Respect\Validation\Rules\AbstractRule类或实现Respect\Validation\Validatable接口来创建自己的验证规则。请参阅其文档了解相关信息。