JQuery для PHP переводчик? - PullRequest
       1

JQuery для PHP переводчик?

6 голосов
/ 11 февраля 2010

У меня есть набор правил проверки формы, которые я написал с плагином jquery validator .Поскольку я должен повторить ту же проверку на стороне сервера, я подумал, что было бы неплохо не переписывать мои правила на 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...
       }

Ответы [ 4 ]

3 голосов
/ 11 февраля 2010

Я думаю, что вы на правильном пути, но я не думаю, что вы найдете это так легко, как вы ожидаете. Мне неизвестна заранее созданная функция, которая могла бы точно анализировать и преобразовывать набор данных для этой конкретной цели.

Если бы я собирался это сделать, я бы сформировал свой набор проверки в многомерный связанный массив, содержащий необходимую информацию в PHP.

После этого вам нужно будет решить, как разговаривать с JavaScript. Если вы загружаете свой JS-файл на страницу, я бы просто использовал PHP для циклического прохождения массива PHP и конструирования ваших JS-правил по мере необходимости. Если вы используете вызовы внешних функций, то JSON кодирует массив и передает его в функцию-транслятор, которая анализирует массив JSON и переформатирует его в соответствии с тем, что ожидает ваш JQuery.

РЕДАКТИРОВАТЬ, ЧТОБЫ УТОЧНИТЬ:

Вы можете пойти в другом направлении и перейти от JS к PHP, но, сделав так, как я предлагаю, вы сможете легко поменять другие библиотеки JS или JQuery и просто изменить свой переводчик. Переходя от JS к PHP, вам придется изменить обе стороны, если вы когда-нибудь решите изменить валидаторы JS. Если вы планируете делать кодирование с несколькими веб-сайтами или несколькими разработчиками, было бы гораздо лучше просто изучить общую конфигурацию PHP-массива и написать переводчики для JS.

1 голос
/ 11 февраля 2010

Я думаю, что то, что вы пытаетесь сделать (конвертация javascript в php), не очень систематично, и я сомневаюсь, что вы найдете готовое решение.

А как насчет этого подхода:

  1. Создайте некоторую конфигурацию для того, какие поля должны быть в форме, включая проверку.
  2. Создайте функцию PHP, которая генерирует форму html + javascript, включая проверку на основе конфигурации.
  3. Создать функцию PHP, которая проверяет ввод формы на основе конфигурации.
1 голос
/ 11 февраля 2010

Я бы порекомендовал сделать наоборот: преобразовать некоторые функции проверки на основе PHP в функции Javascript. Автоматически преобразованные функции не будут такими же гибкими и, следовательно, такими же универсальными или сильными, как функции, написанные вручную, и вы действительно хотите, чтобы лучшее было на стороне сервера. В худшем случае, если вы введете некоторую проверку PHP-> JS, пользователь получит ответный запрос на сервер, прежде чем ему сообщат, что его адрес электронной почты неправильный.

0 голосов
/ 11 февраля 2010

Поскольку правила проверки довольно просты, вы можете написать свой собственный и сохранить его как функцию. Просто заставьте его принять значение в параметре, а затем верните true или false.

В вашем php-коде, который принимает форму отправки, вам просто нужно передать значение поля в функцию проверки и проверить, является ли оно результатом true или false.

Важна проверка на стороне сервера, поскольку проверка на основе JavaScript может быть легко отключена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...