severak/forms

来自 Kyselo 项目的独立 PHP 表单组件

1.0 2022-08-25 10:40 UTC

This package is auto-updated.

Last update: 2024-09-12 15:25:53 UTC


README

来自 Kyselo 的独立 PHP 表单组件。

这些自2017年以来运行良好,并且具有非常简单和稳定的接口。

用法示例

请注意,这与您在纯 HTML 中定义表单的方式非常相似,但它会自动添加服务器端验证。

<?php
// registration form
$form = new severak\forms\form(['method'=>'POST']);
$form->field('username', ['label'=>'User name / URL', 'required'=>true]);
$form->field('email', ['label'=>'E-mail', 'type'=>'email', 'required'=>true]);
$form->field('password', ['label'=>'Password', 'type'=>'password', 'required'=>true]);
$form->field('password_again', ['label'=>'and again', 'type'=>'password', 'required'=>true]);
$form->field('terms_agreement', ['label'=>'I agree with terms of service', 'type'=>'checkbox']);
$form->field('register', ['label'=>'Register new account', 'type'=>'submit']);

$form->rule('username', function($name) {
	return preg_match('~^[a-z]([a-z0-9]{2,})$~', $name)===1;
}, 'Bad username format: 3 or more lower case letters and numbers allowed, must start with letter.');

$form->rule('password_again', function($password, $fields) {
	return $password==$fields['password'];
}, 'Must match previous password.');

$form->rule('terms_agreement', function($agreed){
	return !empty($agreed);
}, 'You cannot use our service without terms agreement.');

if ($form->fill($_POST) && $form->validate()) {
    // form was successfully sent and data were valid
    if ($databaseInsertFailed) {
        // you can also manually error messages AFTER validation, e.g. when something went wrong with databse
        $form->error('register', 'Something went wrong while adding you. Please try again later.');
    }
}

// display form as HTML
echo $form;