matthewbaggett / drupal_magic_forms
因为 Drupal 表单真的很糟糕。
dev-master
2016-02-06 21:17 UTC
Requires
- composer/installers: ~1.0
This package is auto-updated.
Last update: 2024-09-24 06:17:23 UTC
README
对 Drupal 7 的表单处理的一种稍微不那么令人讨厌的实现。
因为我们都知道 Drupal 表单真的很糟糕。
支持多种表单字段类型
- 按钮
- 文件
- 组
- 隐藏
- 输入
- 单选按钮
- 选择
- 文本区域
- 日期
- 范围(感谢 Jason!)
- 多选单选按钮
- 开关(又是 Jason)
附加功能
- 数据表。
- 标签
验证器
带有验证器的示例
$form = new magic_form('my-form');
$form
->add_field(
magic_form_field_text::factory('some-field', 'Some Field', 'Some Default')
->add_validator(new magic_form_validator_is_valid_phonenumber())
->add_validator(new magic_form_validator_is_valid_email())
)->add_field(
magic_form_field_text::factory('other-field')
->add_validator(new magic_form_validator_is_less_than(100))
->add_validator(new magic_form_validator_is_greater_than(50))
)->add_field(
magic_form_field_text::factory('other-field')
->add_validators(
new magic_form_validator_is_less_than(100),
new magic_form_validator_is_greater_than(50),
new magic_form_validator_regexp('REGEXP_GOES_HERE')
)
)->add_fields(
magic_form_field_text::factory('some-field', 'Some Field', 'Some Default')
->add_validator(new magic_form_validator_is_valid_phonenumber())
->add_validator(new magic_form_validator_is_valid_email()),
magic_form_field_text::factory('some-field', 'Some Field', 'Some Default')
->add_validator(new magic_form_validator_is_valid_phonenumber())
->add_validator(new magic_form_validator_is_valid_email()),
magic_form_field_text::factory('some-field', 'Some Field', 'Some Default')
->add_validator(new magic_form_validator_is_valid_phonenumber())
->add_validator(new magic_form_validator_is_valid_email()),
magic_form_field_text::factory('some-field', 'Some Field', 'Some Default')
->add_validator(new magic_form_validator_is_valid_phonenumber())
->add_validator(new magic_form_validator_is_valid_email())
);
$form->submit(function (magic_form $form) {
drupal_set_message("Submit happened in form {$form->magic_form_id} / {$form->form_id}");
});
// Check to see if an earlier, updated build of this form exists.
magic_form::check_for_updated_form($form);
// render the form.
return $form->__toString();