尝试使用cakephp3验证无模型表单

时间:2017-08-29 20:33:43

标签: php jquery validation cakephp

所以我对PHP有点新手,对Cakephp3更是如此,我正在理解Cake框架以及我以前的合作者对蛋糕的解释,所以如果我正在做的话,请提前道歉已关闭”。

所以我试图获取并操纵通过联系表单中的帖子请求提供给我的信息。它可能会也可能不会保存在表格中,我不确定。但我遇到的问题是了解信息从js到控制器的方式。 表单html是自定义的,不是使用验证器帮助程序创建的。

因此,这是我的联系页面控制器的显示操作

function display() {

    if($this->request->is('ajax')){  

        $this->viewBuilder()->autoLayout(false); 
        $this->viewBuilder()->layout = 'ajax'; //both these lines do nothing

        echo json_encode($this->request->data); 
        // this information gets displayed inside the $.post function below

        exit;
    }

在同一个功能中,我有这个代码。我正在尝试使用它来验证我在js中使用$ .post得到的任何东西。但它不起作用。我只是想要一个id为contact_name的字段,我假设它是如何识别和检索相关字段的,但是当我提交表单时,日志似乎产生了错误数组,无论contact_name是什么是否有,所以根据我的理解,如果没有错误,那么$ errors应该是空的,但事实并非如此

        $validator = new Validator();
        $validator->requirePresence('contact_name');

        $errors = $validator->errors($data);
        var_dump($errors);

这是jquery位

$(document).ready(function() {
'use strict';

enquire.register('screen and (max-width: 480px)', {
    // match: _.bind(this.formBindMobile, this)
});

enquire.register('screen and (min-width: 768px)', {
    // match: _.bind(this.desktopHandler, this)
});

var contactPage = {
    init: function() {
        $(this.variables.formButtonSelector).on('click', _.bind(this.formButtonHandler, this));
        // _.bind(this.validateForm, this);
    },
    variables: {
        formButtonSelector: '.adherence__form__button',
        formSelector: '#adherence__form',
        inputSelector: '.form__input',
        phoneSelector: '#contact_phone',
        nameSelector: '#contact_name',
        emailSelector: '#contact_email',
        timeSelector: '#contact_time',
    },

    formButtonHandler: function() {
        // console.log($(event.currentTarget).parent());
        // $(this.variables.formSelector).submit(this.submitFn());
        this.submitFn();

    },

    submitFn: function() {

        var form = $(this.variables.formSelector),
            actionURL = form.attr('action'),
            formInputs = {
                phoneVal: form.find(this.variables.phoneSelector).val(),
                nameVal: form.find(this.variables.nameSelector).val(),
                emailVal: form.find(this.variables.emailSelector).val(),
                timeVal: form.find(this.variables.timeSelector).val(),
            };

        $.post(actionURL, formInputs, _.bind(this.postForm, this));

    },

    postForm: function(data, status) {

        if(!($.each($(this.variables.inputSelector), this.checkForm))) {
            return;
        } else {
            console.log(data);
        }

    },

    checkForm: function(index, element) {
        if($(element).hasClass('js-invalid')) {
            console.log("invalid fields present");
            return false;
        }
        if($(element).val() === "") {
            console.log("empty fields present");
            return false;
        }

    },

};
contactPage.init();
});

因此在html中,这是

形式的输入字段的示例
<input class="form__input form__input--white" 
        type="" 
        name="contact_phone"
        id="contact_phone"
        minlength="9"
        data-pattern-msg  = "Por favor escreva o seu telefone!"
        data-pattern-msg-required = "Escreva o seu telefone"
        data-pattern-msg-minlength = "O seu número de telefone tem que ter no mínimo 9 digitos"
        data-pattern="number"
        data-pattern-keepfocus="true"
        data-pattern-digits="9"
        data-pattern-validateon="blur"
        required
        >

所以,我要问的是有可能验证我从jquery得到的是什么,我做错了什么?

0 个答案:

没有答案