Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Валидация формы в контроллере (https://javascript.ru/forum/extjs/27317-validaciya-formy-v-kontrollere.html)

vadim.v 09.04.2012 13:04

Валидация формы в контроллере
 
Есть контроллер

Ext.define('Admin.controller.Companies', {
    extend: 'Ext.app.Controller',
    stores: ['Companies','EmploerTypes'],
    models: ['Company'],
    views: [
    'company.List',
    'company.Edit'
    ],
    init: function () {
        this.control({
            'companyedit button[action=save]': {
                click: this.updateCompany
            }
        });
    },
.....
    editCompany: function (grid, record) {
        var view = Ext.widget('companyedit');
        view.down('form').loadRecord(record);
    },
    updateCompany: function (button) {
        var win = button.up('window'),
        form = win.down('form'),
        record = form.getRecord(),
        values = form.getValues(),
        store = this.getCompaniesStore();
        if (form.getForm().isValid()) {
            record.set(values);
            win.close();
        }
    }
});


и форма

Ext.define('Admin.view.company.Edit', {
    extend: 'Ext.window.Window',
    alias: 'widget.companyedit',
    title: 'Edit Company',
    width: 600,
    height: 370,
    layout: 'fit',
    modal: true,
    autoShow: true,
    
    initComponent: function () {
        this.items = [
        {
            xtype: 'form',
            bodyStyle: {
                background: 'none',
                padding: '10px',
                border: '0'
            },
            
            
            items: [...]
            }]
        }];
        
        this.buttons = [
        {
            text: 'Save',
            action: 'save'
        },
        {
            text: 'Cancel',
            scope: this,
            handler: this.close
        }
        ];
        this.callParent(arguments);
    }
});



При клике на Save формы надо проверить данные на сервере, как это сделать ?

UPD: Вроде решено

nekto_O 09.04.2012 13:23

Цитата:

Сообщение от vadim.v
как правильно сделать серверную валидацию в данном случае

Ну вероятно создать массив из соответствующих полей, и по каждому полю проверять правильность входных данных, только причем здесь метод isValid(), если он осуществляет валидацию формы на клиенте?

nekto_O 09.04.2012 13:37

Цитата:

Сообщение от vadim.v
При клике на Save формы надо проверить данные на сервере, как это сделать ?

так для того чтобы на сервере проверить данные надо их сначала туда отправить)))

vadim.v 09.04.2012 13:58

да отправить это понятно, я сначала хотел хотел сделать чтобы без отправки данных через форму, чтобу через Store все шло, она все равно данные отправляет на запись если они меняются в таблице.

сделал обычным способом вот так валидацию

updateCompany: function (button) {
        var win = button.up('window'),
        form = win.down('form'),
        record = form.getRecord(),
        values = form.getValues(),
        store = this.getCompaniesStore();
        
        form.submit({
            clientValidation: true,
            params: {
                id: record.getId()
            },
            success: function(form, action) {
               Ext.Msg.alert('Success', 'Данные о компании обновлены!');
               record.set(values);
               win.close();
            }
            
        });
    }

nekto_O 09.04.2012 15:36

да, но вы же про серверную валидацию спрашивали))
Цитата:

Сообщение от vadim.v
надо проверить данные на сервере



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