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;