forms-mongoose icon indicating copy to clipboard operation
forms-mongoose copied to clipboard

does this still work, as in examples?

Open konsumer opened this issue 11 years ago • 1 comments

I have a model like this:

var forms = require('forms-mongoose');
var mongoose = require('mongoose');
var schema = new mongoose.Schema({
    "created": {type: Date, default: Date.now, forms: {all:{}}},
    "name": {type:String, forms: {all:{}}},
    "verified": {type:Boolean, forms: {all:{}}},
    "token": {type:String, forms: {all:{}}},
    "email": {type:mongoose.SchemaTypes.Email, required:true, forms: {all:{}}},
    "website": {type:mongoose.SchemaTypes.Url},
    "admin": {type:Boolean, default: false, forms: {all:{}}}
});
schema.statics.createForm = function (extra) {
  return forms.create(this, extra);
}
module.exports = mongoose.model('User', schema);

when I run this:

form = forms.create(models.User, 'new');

// or

models.User.createForm('new')

I get this:

{ fields: 
   { '0': 'n',
     '1': 'e',
     '2': 'w',
     created: 
      { required: undefined,
        validators: [Object],
        widget: [Object],
        parse: [Function],
        bind: [Function],
        errorHTML: [Function],
        labelText: [Function],
        labelHTML: [Function],
        classes: [Function],
        toHTML: [Function],
        name: 'created' },
     name: 
      { required: undefined,
        validators: [Object],
        widget: [Object],
        parse: [Function],
        bind: [Function],
        errorHTML: [Function],
        labelText: [Function],
        labelHTML: [Function],
        classes: [Function],
        toHTML: [Function],
        name: 'name' },
     verified: 
      { required: undefined,
        validators: [Object],
        widget: [Object],
        parse: [Function],
        bind: [Function],
        errorHTML: [Function],
        labelText: [Function],
        labelHTML: [Function],
        classes: [Function],
        toHTML: [Function],
        name: 'verified' },
     token: 
      { required: undefined,
        validators: [Object],
        widget: [Object],
        parse: [Function],
        bind: [Function],
        errorHTML: [Function],
        labelText: [Function],
        labelHTML: [Function],
        classes: [Function],
        toHTML: [Function],
        name: 'token' },
     email: 
      { required: true,
        validators: [Object],
        widget: [Object],
        parse: [Function],
        bind: [Function],
        errorHTML: [Function],
        labelText: [Function],
        labelHTML: [Function],
        classes: [Function],
        toHTML: [Function],
        name: 'email' },
     admin: 
      { required: undefined,
        validators: [Object],
        widget: [Object],
        parse: [Function],
        bind: [Function],
        errorHTML: [Function],
        labelText: [Function],
        labelHTML: [Function],
        classes: [Function],
        toHTML: [Function],
        name: 'admin' } },
  bind: [Function],
  handle: [Function],
  toHTML: [Function] }

Note the 'n', 'e', 'w'...

Also, if I run form.toHMTL() I get this:

/Users/konsumer/Desktop/forms/node_modules/forms-mongoose/node_modules/forms/lib/forms.js:108
                return html + form.fields[k].toHTML(kname, iterator);
                                             ^
TypeError: Object n has no method 'toHTML'
    at /Users/konsumer/Desktop/forms/node_modules/forms-mongoose/node_modules/forms/lib/forms.js:108:46
    at Array.reduce (native)
    at Object.f.toHTML (/Users/konsumer/Desktop/forms/node_modules/forms-mongoose/node_modules/forms/lib/forms.js:106:45)
    at Object.<anonymous> (/Users/konsumer/Desktop/forms/app.js:7:19)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)

this seems to work:

var form = forms.create(models.User);
for (i in form.fields){
    if (form.fields[i].toHTML)
        console.log(form.fields[i].toHTML())
}

I get this:

<div class="field"><label for="id_created">Created</label><input type="text" name="created" id="id_created" /></div>
<div class="field"><label for="id_name">Name</label><input type="text" name="name" id="id_name" /></div>
<div class="field"><label for="id_verified">Verified</label><input type="checkbox" name="verified" id="id_verified" value="on" /></div>
<div class="field"><label for="id_token">Token</label><input type="text" name="token" id="id_token" /></div>
<div class="field required"><label for="id_email">Email</label><input type="email" name="email" id="id_email" /></div>
<div class="field"><label for="id_admin">Admin</label><input type="checkbox" name="admin" id="id_admin" value="on" /></div>

on closer inspection, this works, too:

var form = forms.create(models.User);
console.log(form.toHTML())

konsumer avatar Apr 18 '14 05:04 konsumer

How can i add classes to the generated elements

seshuk291 avatar Nov 10 '17 17:11 seshuk291