Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   ExtJS 4: как проще всего организовать server-side валидацию? (https://javascript.ru/forum/extjs/21802-extjs-4-kak-proshhe-vsego-organizovat-server-side-validaciyu.html)

leaf 24.09.2011 19:16

ExtJS 4: как проще всего организовать server-side валидацию?
 
Вопрос по ExtJS 4

везде (здесь например) пишется, мол, ответ от сервера должен быть следующем формате:
{
    success: false,
    errors: {
        clientCode: "Client not found",
        portOfLoading: "This field must not be null"
    }
}


Но никак не найду примера того как этим воспользоваться. Вижу кучу примеров с тем как люди вручную обрабатывают ответ от сервера и расставляют ошибки для полей.
Автоматизировано это в ExtJS 4 или нет?

И еще вопрос можно ли как-то прямо в конфиге для кнопки указать, что она делает submit своей формы или это тоже руками нужно все писать?

Вобщем, в идеале хотелось бы просто сконфигурировать форму указав url-путь для submit'a и кнопку, которая будет делать этот самый submit, а чтобы на основе полученного ответа, если он success: false автоматически отображались ошибки валидации.

DreamTheater 27.09.2011 21:53

http://docs.sencha.com/ext-js/4-0/#!...-method-submit

По поводу валидации я не совсем понял вопрос.

Bo3gyX 30.09.2011 22:29

пример кода из компанета формы для ее submit на extjs 4

//....
xtype: 'button',
handler: function() {
var form = this.up('form').getForm();
form.submit({
url: 'register.php',
success: function(form, action) {
//...
},
failure: function(form, action) {
//...
}
});


вот мой пример ответа от сервереа на PHP. (в данном примере результат возвращает ошибку)

$response = array(
'success'=>false,
'errors'=>array(
'login'=>'Такой логин уже есть',
'password'=>'Не верно указан пароль',
'confirm_password'=>'Пароли не совпадают',
),
'msg'=>'Ошибка при регистрации!'
);

echo json_encode($response);

ключи success и errors распазнаются exеjs 4 самостоятельно
при success = true будет вызываться функция success
при success = false - failure.
ключ errors должен содержать массив ключ:значение, где ключ -название поля формы , а значение текст ошибки.
ExtJS 4 определит по ним нужные поля и выделит их.

msg - это мой параметр доступ к тоторому можно получить из функции success или errors через пераданный им параметр action. Присер:
//...
failure: function(form, action) {
alert(action.result.msg);
}
//...

вы можете задавать таких параметров сколько угодно


Часовой пояс GMT +3, время: 15:32.