jquery 到 php 的翻译器?

Posted

技术标签:

【中文标题】jquery 到 php 的翻译器?【英文标题】:jquery to php translator? 【发布时间】:2011-01-15 17:25:32 【问题描述】:

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

是否有一种通用的方法可以将field=>rulename=>value=functionjavascript/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...
       

【问题讨论】:

【参考方案1】:

我认为您走在正确的道路上,但我认为您会发现它并不像您期望的那样容易。我不知道有一个预先构建的函数可以准确地解析和重组数据集以用于此特定目的。

如果我要这样做,我会将我的验证集形成一个多维关联数组,其中包含 PHP 中的必​​要信息。

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

编辑澄清:

你可以从另一个方向从 JS 传递到 PHP,但是按照我建议的方式进行操作将使你能够轻松地更换其他 JS 或 JQuery 库,并且只需更改你的翻译器。从 JS 到 PHP,如果您决定更改 JS 验证器,则必须同时更改双方。如果您打算进行多网站或多开发人员编码,最好只学习一个常见的 PHP 数组配置并为 JS 编写翻译器。

【讨论】:

我想我可以用 PHP 编写规则,然后将它们解析成有效的 javascript,但我真的宁愿走另一个方向。 @dnagirl - 我唯一担心的是,将信息从 JavaScript 传递到 PHP 会更加困难,因为它主要使用拉系统,您必须使用 PHP 请求数据。这在这种情况下可能有效,但对于更通用的方法,我个人会从另一个方向进行。想象一下,从现在起 6 个月后,您决定使用更新的验证器,您不必更改整个游戏,只需更改 JS 翻译器... PHP 不会彻底改变 =P 验证器比 PHP 更有可能发生变化。【参考方案2】:

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

在您接收表单提交的 php 代码中,您只需将字段值传递给您的验证函数,并检查结果是真还是假。

在后端验证很重要,因为可以轻松关闭基于 javascript 的验证。

【讨论】:

【参考方案3】:

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

【讨论】:

@nickf - 虽然这是可能的,但请查看对我的回复的编辑,了解我会避免这样做的原因。它非常有限,不能很好地扩展。【参考方案4】:

我认为您正在尝试做的事情(javascript 到 php 代码转换)不是很系统,我怀疑您会找到现成的解决方案。

这种方法怎么样:

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

【讨论】:

我同意这个解决方案 - 拥有一个在服务器上转换为 PHP 并在客户端上转换为 JS 的通用配置比在运行中将 JS 代码转换为 PHP 更简单

以上是关于jquery 到 php 的翻译器?的主要内容,如果未能解决你的问题,请参考以下文章

在Javascript / Jquery的Twig模板中添加翻译

类似于 Rosetta 的 PHP 翻译前端?

PHP 8.0引入可选JIT编译器

Peachpie编译器致力于将PHP带入.Net世界

jQuery翻译

jQuery UI 日期选择器翻译