2013-06-21 6 views
0

Im new no NodeJS, ExpressJS и Jade. Я использую express-validator для проверки формы.Экспресс-валидатор сохраняет входные значения

В пути:

req.assert('firstName', 'Name is required').notEmpty(); 
req.assert('lastName', 'Name is required').notEmpty(); 
req.assert('email', 'A valid email is required').isEmail(); 

var errors = req.validationErrors(); 
.... 
if (errors){ 
    res.render('users/new', { 
     errors: errors 
    }); 
} 
.... 

В Jade, чтобы отобразить сообщение об ошибке:

- if (errors) 
div.alert.alert-error 
    ul 
    - each error in errors 
    li= error.msg 

Над кодом работает. Я хочу, чтобы входные значения сохранялись в форме, чтобы пользователь не вводил его снова.

input#name(type="text", name="name", value="?") 

Как?

Благодаря

ответ

4

Вы можете просто положить обратно значение оказанного зрения и интерполировать его во входном тег.

if (errors) { 
    res.render('users/new', { 
    errors: errors, 
    firstName: firstName, 
    ... 
    }); 
} 

и в шаблоне нефрита поместить

input#name(type="text", name="firstName", value="#{firstName}") 

или

input#name(type="text", name="firstName", value= firstName) 

это зависит от вашего личного стиля.

Лучше определить значения как person.first, person.last и person.email, потому что вы можете поместить только person в ваше оказанном зрение. файл

0

Ваш users/new.js файл

var body = req.body; 
var form = { 
    name: body.name, 
    surname: body.surname, 
    ... 
}; 

req.checkBody('name', 'Name is required').notEmpty(); 
req.checkBody('surname', 'Surname is required').notEmpty(); 

var errors = req.validationErrors(); 

if (errors) { 
    //Pass both errors and form objects as local variables 
    res.render('users/new', { errors: errors, form: form }); 
} else { 
    ....//write to DataBase 
}  

new.handlebars

{{#if errors}} 
    {{#each errors}} 
     <div class="alert alert-danger">{{msg}}</div> 
    {{/each}} 
{{/if}} 
<form class="" method="post" action="https://stackoverflow.com/users/new"> 
    <p>Name*</p> 
    <input type="text" value="{{form.name}}" name="name" /> 

    <p>Surname *</p> 
    <input type="text" value="{{form.surname}}"name="surname" /> 
</form>