Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery到php转换器?_Php_Jquery_Validation - Fatal编程技术网

jquery到php转换器?

jquery到php转换器?,php,jquery,validation,Php,Jquery,Validation,我有一套用jquery插件编写的表单验证规则。因为我必须在服务器端重复相同的验证,所以我认为不必用PHP重写规则会很好。如果规则是简单的field=>rulename=>value,我可以将它们存储为JSON并将它们解码到PHP数组中。不幸的是,有些规则依赖于其他字段或具有计算值 是否有一种通用方法将field=>rulename=>value=function{}从javascript/jquery转换为PHP?或者,有没有办法在服务器端运行jquery,然后将结果传递给PHP 一些规则的示例

我有一套用jquery插件编写的表单验证规则。因为我必须在服务器端重复相同的验证,所以我认为不必用PHP重写规则会很好。如果规则是简单的
field=>rulename=>value
,我可以将它们存储为JSON并将它们解码到PHP数组中。不幸的是,有些规则依赖于其他字段或具有计算值

是否有一种通用方法将
field=>rulename=>value=function{}
从javascript/jquery转换为PHP?或者,有没有办法在服务器端运行jquery,然后将结果传递给PHP

一些规则的示例:

        rules: {
            title: {required:true, minlength:5},
            description: {required:true, minlength:5},
            event_type_id: "required",
            ev_start: { dateCan: true, required: true},
            ev_end:{ dateCan: true,
                     minDate: "input[name='ev_start']"
            },
            ev_starttime:{
                required: 
                    function(element){
                        return $("input[name='allday']:unchecked")
                    },
                time: true,
                maxTime: {
                    depends: function(element) {
                                return $("input[name='ev_endtime']:filled")
                                       && $("input[name='ev_start']").valid()   
                                       && $("input[name='ev_end']").valid()
                                       && $("input[name='ev_start']").val()==$("input[name='ev_end']").val()
                            },
                    param: "input[name='ev_endtime']"
                }
            },
       //etc...
       }

我认为你走的是正确的道路,但我不认为你会发现它像你期望的那样容易。我不知道有一个预构建的函数可以准确地解析和改革数据集,以达到这个特定的目的

如果我要这样做,我会将我的验证集形成一个多维关联数组,该数组在PHP中保存必要的信息

之后,您将不得不决定如何与JavaScript对话。如果您在页面中内联加载JS,我将使用PHP循环遍历PHP数组,并根据需要构建JS规则。如果您使用的是外部函数调用,那么JSON将对数组进行编码,并将其传递给转换器函数,该转换器函数将解析JSON数组并将其重新格式化为JQuery所期望的格式

编辑以澄清:


您可以从另一个方向,从JS传递到PHP,但按照我建议的方式,您可以轻松地交换其他JS或JQuery库,只需更改转换器。从JS到PHP,如果您决定更改JS验证器,则必须同时更改两个方面。如果您计划进行多网站或多开发人员编码,那么最好只学习一个常见的PHP数组配置,只编写JS转换器。

由于验证规则非常简单,您可以编写自己的验证规则并将其保存为函数。只需让它接受参数中的值,然后返回true或false

在接收表单提交的php代码中,只需将字段值传递给验证函数,并检查结果是否为true或false


后端验证很重要,因为基于javascript的验证可以很容易地关闭。

我建议做相反的事情:将一些基于PHP的验证函数转换为javascript函数。自动转换的函数不会像手工编码的函数那样灵活,因此也不会像手工编码的函数那样通用或强大,而且您确实希望最好的函数位于服务器端。最糟糕的情况是,如果你塞满了一些PHP->JS验证,用户会在被告知他们的电子邮件地址错误之前往返服务器。

我认为你试图做的(javascript到PHP代码转换)不是很系统,我怀疑你会找到现成的解决方案

这种方法怎么样:

  • 为表单中应包含的字段创建一些配置,包括验证
  • 创建一个PHP函数,生成html+javascript表单,包括基于配置的验证
  • 创建一个PHP函数,根据配置验证表单输入

  • 我想我可以用PHP编写规则,然后将它们解析为有效的javascript,但我真的宁愿选择另一个方向。@dnagirl-我唯一担心的是,将信息从javascript传递到PHP会更加困难,因为它主要使用拉式系统,您必须用PHP请求数据。这在这种情况下可能有效,但对于更普遍的方法,我个人会朝着另一个方向去做。想象一下,6个月后,你决定使用一个更新的验证器,你不必改变整个游戏,你只要改变JS翻译。。。PHP不会彻底改变关于验证器比PHP更有可能改变的观点。@nickf-虽然这是可能的,但请查看对我的回复的编辑,了解我为什么会避免这样做。我同意这个解决方案——有一个通用的配置,在服务器上转换成PHP,在客户端转换成JS,这比动态地将JS代码转换成PHP要简单得多