thewebmen/silverstripe-ajaxforms

Silverstripe AJAX表单模块

安装数: 2,267

依赖关系: 0

建议者: 0

安全性: 0

星标: 2

关注者: 5

分支: 1

开放性问题: 0

类型:silverstripe-vendormodule

1.0.1 2018-02-23 13:53 UTC

This package is auto-updated.

Last update: 2024-09-07 00:27:55 UTC


README

简介

为silverstripe提供的Ajax表单,使用jQuery和jQuery validate

要求

  • SilverStripe CMS ^4.0
  • jQuery
  • jQuery validate

安装

composer require "thewebmen/silverstripe-ajaxforms"

如何使用

请确保您的页面已加载jQuery和jQuery validate以使用Ajax表单。同时包含以下js文件

Requirements::javascript('thewebmen/silverstripe-ajaxforms:resources/js/ajaxforms.js');

然后通过扩展TheWebmen\Ajaxforms\AjaxForm类创建一个表单,该类在成功时返回TheWebmen\Ajaxforms\AjaxFormResponse类的实例。

表单示例

use TheWebmen\Ajaxforms\AjaxForm;
use SilverStripe\Control\RequestHandler;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\RequiredFields;

class ExampleForm extends AjaxForm {

    public function __construct(RequestHandler $controller = null)
    {
        $fields = new FieldList(array(
            TextField::create('MyField', 'This is a field')
        ));

        $actions = new FieldList(array(
           FormAction::create('handle', 'Send')
        ));

        $validator = new ExampleFormValidator(array(
            'MyField'
        ));

        parent::__construct($controller, 'MyField', $fields, $actions, $validator);
    }

    public function handle($data){
        $response = new \TheWebmen\Ajaxforms\AjaxFormResponse();
        return $response->redirect('http://www.google.nl');
    }

}

class ExampleFormValidator extends RequiredFields {

    public function php($data)
    {
        $valid = parent::php($data);
        if($data['MyField'] != 'Test'){
            $this->validationError(
                'MyField',
                'This field is only valid if the value is: Test',
                'required'
            );
            $valid = false;
        }
        return $valid;
    }

}

表单错误使用jQuery validate显示,您可以使用自己的jQuery validate来自定义设置,或者让ajaxforms.js脚本处理以使用jQuery validate的默认设置。

当表单正在提交时,会添加".is-posting"类到表单中,您应该使用这个类来添加一些进度样式。

待办事项

  • 改进文档
  • 为redirectToPage响应添加检查页面是否存在