Forms OctoberCMS表单验证警报问题

Forms OctoberCMS表单验证警报问题,forms,validation,octobercms,Forms,Validation,Octobercms,我已经安装了OctoberCMS的新版本,添加了用户插件,并创建了主题。一切都是新鲜的,没有插件修改。现在我创建了注册页面并对其进行了测试。看起来表单验证的工作有点滑稽。我将所有字段留空,然后单击提交按钮 它抛出这样的警报框,这有点出乎意料 然后,如果我第二次单击“提交”按钮,表单验证将显示字段错误,这与通常情况相同。我只想要这种没有弹出框的提醒 有人知道为什么会发生这种情况吗?OctoberCMS的AJAX框架会抛出javascript警报名称字段,因为您提交的表单未通过模型的验证规则 检

我已经安装了OctoberCMS的新版本,添加了用户插件,并创建了主题。一切都是新鲜的,没有插件修改。现在我创建了注册页面并对其进行了测试。看起来表单验证的工作有点滑稽。我将所有字段留空,然后单击提交按钮

它抛出这样的警报框,这有点出乎意料

然后,如果我第二次单击“提交”按钮,表单验证将显示字段错误,这与通常情况相同。我只想要这种没有弹出框的提醒


有人知道为什么会发生这种情况吗?

OctoberCMS的AJAX框架会抛出javascript警报
名称字段,因为您提交的表单未通过模型的验证规则

检查您的用户模型,您可能会注意到,
name
字段是必需的

public $rules = [ 'name' => 'required' ]; // no name was supplied
这里你有两个选择

  • 使用JS在提交前验证表单数据

        $('button.submit').click(function(e){
            e.preventDefault(); // prevent submission
    
        // check Form fields are valid
    
          // then Submit form using the AJAX API - OnCreateUser
    
            $.request('onCreateUser', {
            data: {name : ..., surname: ....}, // Data Object
            error: function(jqXHR, textStatus, error){
                // handle errors..
              }
            });
        });
    
  • 为你的站点使用全局AJAX处理程序-弹出窗口不会显示,但你需要处理这些事件并提醒用户

        $window.on('ajaxErrorMessage', function(event, message){
            //   ....
            event.preventDefault();
        });
        $window.on('ajaxError', function(event, context, status,jqXHR ){
            //   ....
            event.preventDefault();
        });
    
此外,建议您在组件中使用该类并检查提交的数据-您还可以添加自定义验证规则/消息

  public function onCreateUser()
    {
        if (Request::ajax()) {

            $customMessages = [
             'name.required' => 'Name Field is required',
             'email.required' => 'Email field is required',
          ];

          $customAttributes = [
            'email' => 'Email',
            'name' => 'Name',
          ];

            $data = post();
            $rules['name']  = 'required';
            $rules['email'] = 'required';


            $validation = Validator::make($data, $rules,$customMessages, $customAttributes);
            if ($validation->fails()) {
                $messages = json_encode($validation->messages(), true);
                throw new ValidationException(array(
                    'title' => 'Error Creating User',
                    'message' => $messages
                ));
            }   

           ..........

        } 
    }