在Model.beforeValidate中获取数组值

我正在尝试使用隐藏的input技术来读取checkboxinput的值。

轨/的ActionView /助手/表单助手/ check_box

从ActivityOverlord示例:

视图/用户/ edit.ejs

<% if (user.admin) { %> <input type="hidden" name="admin" value="unchecked"> <label class="checkbox"><input type="checkbox" name="admin" checked> Admin</label> <% } else { %> <input type="hidden" name="admin" value="unchecked"> <label class="checkbox"><input type="checkbox" name="admin"> Admin</label> <% } %> 

API /模型/ user.js的

  beforeValidate: function (values, next) { // renamed in Sails v0.10.x // beforeValidation: function (values, next) { if (typeof values.admin !== 'undefined') { if (values.admin === 'unchecked') { values.admin = false; } else if (values.admin[1] === 'on') { values.admin = true; } } next(); }, 

在Sails v0.9.x中:

values.admin是两个项目的数组。

在Sails v0.10.x中:

values.adminfalse

Sails v0.10.x是否应该将一个数组传递给beforeValidate

不要这样做。 2个HTML元素不应该有相同的名称!

就像这样使用它:

 <% if (user.admin) { %> <label class="checkbox"><input type="checkbox" name="admin" checked value="yes"> Admin</label> <% } else { %> <label class="checkbox"><input type="checkbox" name="admin" value="yes"> Admin</label> <% } %> 

比保存之前可以让你的数据

 var data = { name: req.param("username"), .... }; if(req.param("admin") == undefined){ data.admin = false; }else{ data.admin = true; } 

比你可以使用你的

 User.create(data, function(err, success) { ...