已部署的 SCA 版本未进行输入验证
Input Validation not Occurring on Deployed SCA Version
我有一个非常奇怪的错误,我的注册表在部署时没有验证新的输入字段(性别、出生日期)。但是完全相同的代码正在我本地的 SCA Mont Blanc 上进行验证。
我已经完成了完整部署,即 gulp deploy
。
我已经覆盖了 Account
模块。我的 Account/Javascript/Account.Register.Model.js
文件添加了以下验证:
//@property {Object} validation. Backbone.Validation attribute used for validating the form before submit.
validation: {
firstname: { required: true, msg: _('First Name is required').translate() }
, lastname: { required: true, msg: _('Last Name is required').translate() }
, email: { required: true, pattern: 'email', msg: _('Valid Email is required').translate() }
, company: { required: SC.ENVIRONMENT.siteSettings.registration.companyfieldmandatory === 'T', msg: _('Company Name is required').translate() }
, password: { required: true, msg: _('Please enter a valid password').translate() }
, password2: [
{ required: true, msg: _('Confirm password is required').translate() }
, { equalTo: 'password', msg: _('New Password and Confirm Password do not match').translate() }
]
, gender: { required: true, msg: _('Gender is required').translate() }
, dobday: { required: true, msg: _('Date of birth is required').translate() }
, dobmonth: { required: true, msg: _('Date of birth is required').translate() }
, dobyear: { required: true, msg: _('Date of birth is required').translate() }
, phone: { required: false, pattern: 'digits', msg: _('Phone or Mobile number is required').translate() }
}
我已将输入添加到 LoginRegisterOverrides@1.0.0/Templates/login_register_register.tpl
。我不会展示所有这些,但这是性别输入:
<div class="login-register-register-form-controls-group" data-validation="control-group">
<label class="login-register-register-form-label" for="register-gender">
{{translate 'Gender <small class="login-register-register-form-required">*</small>'}}
</label>
<div class="login-register-register-form-controls" data-validation="control">
<select name="gender" id="register-gender" class="login-register-register-select" data-action="selectgender" data-toggle="select-gender">
<option value="">
{{translate '-- Select --'}}
</option>
<option value="1">
Male
</option>
<option value="2">
Female
</option>
</select>
</div>
</div>
我已确认我的模块 ns.package.json
文件覆盖了正确的文件。另外它在本地工作 (gulp local
) 所以我知道它们设置正确。
为什么 issue/problem 输入在部署时不验证但在本地验证?
以下来自我当地的 SCA 网站(性别和 DOB 输入正确验证)。
以下来自我的 deployed/online SCA 网站:
好吧,在尝试修复这个问题几十个小时后,结果发现错误是由于我的 JavaScript
模块文件夹中的 's' 引起的。
在 ns.package.json
我有:
{
"gulp": {
"javascript": [
"JavaScript/*"
],
},
"overrides": {
// Problem here Should be /JavaScript/ not /Javascript/
"suitecommerce/LoginRegister@2.1.0/Javascript/LoginRegister.Register.View.js": "Javascript/LoginRegister.Register.View.js",
}
}
哇,我在 Windows,所以文件路径在本地有效,但 NS 服务器必须是 Linux。如果是,为什么 SCA 开发人员不让所有文件夹都小写并带有下划线,看在上帝的份上!
我有一个非常奇怪的错误,我的注册表在部署时没有验证新的输入字段(性别、出生日期)。但是完全相同的代码正在我本地的 SCA Mont Blanc 上进行验证。
我已经完成了完整部署,即 gulp deploy
。
我已经覆盖了 Account
模块。我的 Account/Javascript/Account.Register.Model.js
文件添加了以下验证:
//@property {Object} validation. Backbone.Validation attribute used for validating the form before submit.
validation: {
firstname: { required: true, msg: _('First Name is required').translate() }
, lastname: { required: true, msg: _('Last Name is required').translate() }
, email: { required: true, pattern: 'email', msg: _('Valid Email is required').translate() }
, company: { required: SC.ENVIRONMENT.siteSettings.registration.companyfieldmandatory === 'T', msg: _('Company Name is required').translate() }
, password: { required: true, msg: _('Please enter a valid password').translate() }
, password2: [
{ required: true, msg: _('Confirm password is required').translate() }
, { equalTo: 'password', msg: _('New Password and Confirm Password do not match').translate() }
]
, gender: { required: true, msg: _('Gender is required').translate() }
, dobday: { required: true, msg: _('Date of birth is required').translate() }
, dobmonth: { required: true, msg: _('Date of birth is required').translate() }
, dobyear: { required: true, msg: _('Date of birth is required').translate() }
, phone: { required: false, pattern: 'digits', msg: _('Phone or Mobile number is required').translate() }
}
我已将输入添加到 LoginRegisterOverrides@1.0.0/Templates/login_register_register.tpl
。我不会展示所有这些,但这是性别输入:
<div class="login-register-register-form-controls-group" data-validation="control-group">
<label class="login-register-register-form-label" for="register-gender">
{{translate 'Gender <small class="login-register-register-form-required">*</small>'}}
</label>
<div class="login-register-register-form-controls" data-validation="control">
<select name="gender" id="register-gender" class="login-register-register-select" data-action="selectgender" data-toggle="select-gender">
<option value="">
{{translate '-- Select --'}}
</option>
<option value="1">
Male
</option>
<option value="2">
Female
</option>
</select>
</div>
</div>
我已确认我的模块 ns.package.json
文件覆盖了正确的文件。另外它在本地工作 (gulp local
) 所以我知道它们设置正确。
为什么 issue/problem 输入在部署时不验证但在本地验证?
以下来自我当地的 SCA 网站(性别和 DOB 输入正确验证)。
以下来自我的 deployed/online SCA 网站:
好吧,在尝试修复这个问题几十个小时后,结果发现错误是由于我的 JavaScript
模块文件夹中的 's' 引起的。
在 ns.package.json
我有:
{
"gulp": {
"javascript": [
"JavaScript/*"
],
},
"overrides": {
// Problem here Should be /JavaScript/ not /Javascript/
"suitecommerce/LoginRegister@2.1.0/Javascript/LoginRegister.Register.View.js": "Javascript/LoginRegister.Register.View.js",
}
}
哇,我在 Windows,所以文件路径在本地有效,但 NS 服务器必须是 Linux。如果是,为什么 SCA 开发人员不让所有文件夹都小写并带有下划线,看在上帝的份上!