【问题标题】:Vee-Validate v3 server side validation in rule规则中的 Vee-Validate v3 服务器端验证
【发布时间】:2020-05-02 14:54:03
【问题描述】:

尝试在规则中进行服务器端验证。是这样的:

        validate(value, {fname, fid } ) {    
            return(axios({
                method: 'post',
                url: 'xyz.php'             
            })
            .then(function (response) {
              return response.msg === 'available'
             }
            })
         )
        },
        message: 'Not available ', 
        params:[ 'fname', 'fid' ]
    });

但是,即使我的请求通过正确的验证返回,我也没有收到任何错误消息。我找到了 2 个示例,但都使用了 this.$refs(.form 或 .observer),因为它在 Vue 对象之外,所以我无法在扩展中访问它。在这种情况下如何设置错误?提前致谢。

模板是这样的:

 <div class="w3-third">
                            <label>From</label>
                            <ValidationProvider vid="st" mode="eager" :rules="{'available': [res_date, endTime, 'starter', selectedField.id] }" v-slot="{ errors }">                        
                                <dropdown id="starttime" :options="startTimeOptions" v-model="startTime" ></dropdown> 
                                <span class="w3-red">{{ errors[0] }}</span>
                            </ValidationProvider>
                        </div>
                        <div class="w3-third  ">
                            <label>Until</label>
                            <ValidationProvider vid="et"  mode="eager" :rules="{'available': [res_date, startTime, 'ender', selectedField.id] }" v-slot="{ errors }">                        
                                <dropdown id="endtime" :options="endTimeOptions"  v-model="endTime"></dropdown> 
                                <span>{{ errors[0] }}</span>
                            </ValidationProvider>

                        </div>

【问题讨论】:

    标签: vee-validate


    【解决方案1】:

    事实证明,问题是因为我使用了我的自定义组件 Dropdown,它没有以与 vee-validate 一起使用的方式设置 v-model。所以 Ryley 关于返还承诺的回答是正确的。

    【讨论】:

      【解决方案2】:

      您的验证函数需要返回 axios 产生的承诺:

          validate(value, {fname, fid } ) {    
              return axios({
              //...
      

      【讨论】:

      • 谢谢,我试试看。
      • 返回 promise 时结果相同。看起来返回是正确的,但验证提供程序上没有显示错误消息。
      • 我很高兴再看一遍,但你必须充实这个问题——相关的 vue 模板是什么样的?
      • 我将模板添加到我原来的问题中。再次感谢。
      猜你喜欢
      • 2023-03-12
      • 2021-10-02
      • 1970-01-01
      • 2018-03-01
      • 2020-05-06
      • 2021-03-08
      • 2021-01-31
      • 2018-06-12
      • 1970-01-01
      相关资源
      最近更新 更多