所以我对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得到的是什么,我做错了什么?