0

我已经建立了一个带有验证规则的模型,并希望将它们与放入表单的信息进行比较。到目前为止,我已经声明了值并且它们验证了

Ext.define('FirstApp.view.ReviewsContainer', {
    extend: 'Ext.NavigationView',
    xtype: 'reviewscontainer',


    config: {

        title: 'Reviews',
        iconCls: 'compose',
        items: [{
                xtype: 'reviews'

            }, {
                xtype: 'button',
                align: 'right',
                ui: 'confirm',
                text: 'Leave Review',
                docked: 'bottom',
                centered: 'true',

                handler: function () {
                    if (!this.overlay) {
                        this.overlay = Ext.Viewport.add({
                            xtype: 'formpanel',
                            requires: ['FirstApp.model.ReviewCheck'],
                            id: 'reviewed',
                            modal: true,
                            hideOnMaskTap: true,
                            showAnimation: {
                                type: 'popIn',
                                duration: 250,
                                easing: 'ease-out'
                            },
                            hideAnimation: {
                                type: 'popOut',
                                duration: 250,
                                easing: 'ease-out'
                            },
                            centered: true,
                            width: Ext.os.deviceType == 'Phone' ? 260 : 400,
                            height: Ext.os.deviceType == 'Phone' ? 220 : 400,
                            styleHtmlContent: true,

                            items: [{
                                    docked: 'top',
                                    xtype: 'toolbar',
                                    title: 'Leave Review'
                                },

                                {
                                    xtype: 'fieldset',

                                    title: 'Reviews',
                                    items: [{
                                            xtype: 'textfield',
                                            name: 'name',
                                            label: 'Name',
                                            placeHolder: 'name',
                                            id: 'text'
                                        }, {
                                            xtype: 'textfield',
                                            name: 'business',
                                            label: 'Place'
                                        }, {
                                            xtype: 'textfield',
                                            name: 'rating',
                                            label: 'Rating'
                                        }, {
                                            xtype: 'textareafield',
                                            name: 'review',
                                            label: 'Review'
                                        }
                                    ]
                                }, {
                                    items: [{
                                            xtype: 'button',
                                            text: 'Submit',
                                            ui: 'confirm',
                                            handler: function () {

                                                console.log("Hello");
                                                //var values = Ext.getCmp('reviewed').getValues();

                                                // var text= Ext.getCmp('text').getValue();

                                                //   var value = Ext.ComponentQuery.query('#text')[0].getValue();


                                                //var reviewCheckForm = this.getReviewCheck();
                                                //var currentForm = reviewCheckForm.getRecord();
                                                // var newValues = reviewed.getValues();

                                                // currentForm.set("name", newValues.name);
                                                // currentForm.set("business", newValues.business);
                                                // currentForm.set("review", newValues.review);


                                                var form = formPanel.getForm(); //Get the basicform instance
                                                var record = form.getRecord(); //Get your record loaded in the form
                                                form.updateRecord(record); //Update your record with the current form values
                                                var errors = record.validate(); //Validate your record



                                                // console.log(newValues);
                                                // var data = Ext.create('FirstApp.model.ReviewCheck', {
                                                //         name: 'dfhd',
                                                //     business: 'sdfs',
                                                //     id: 1,
                                                //   review: 'sfsd'
                                                //  });

                                                //   var errors = data.validate();


                                                // var errors = currentForm.validate();
                                                console.log('Number of errors: ' + errors.getCount());




                                                if (!errors.isValid()) {
                                                    console.log('Number of errors: ' + errors.getCount());

                                                    errors.each(function (item, index, length) {
                                                        // Each item in the errors collection is an instance of the Ext.data.Error   class.
                                                        console.log('Field "' + item.getField() + '" ' + item.getMessage());
                                                    });
                                                    Ext.Msg.alert('Form is invalid!');
                                                } else {

                                                    var values = Ext.getCmp('reviewed').getValues();
                                                    // prints the values filled in the form 
                                                    // text fields of name, email and message.     
                                                    console.log(values.name + "," + values.place + "," + values.rating);


                                                    Ext.Ajax.request({
                                                        url: 'http://insert.php',
                                                        params: values,
                                                        success: function (response) {
                                                            var text = response.responseText;
                                                            Ext.getCmp('reviewed').reset();
                                                            Ext.Msg.alert('Success', "Review successfully created.", Ext.getCmp('reviewed').hide(), Ext.StoreMgr.get('Reviews').load());
                                                            console.log("Im Here");
                                                        }
                                                    });
                                                }
                                            }
                                        }
                                    ]
                                }
                            ],
                            scrollable: false
                        });
                    }

                    this.overlay.show();
                }
            }

        ]
    }
})



Ext.define('FirstApp.model.ReviewCheck', {
    extend: 'Ext.data.Model',
    config: {
        fields: [{
                name: 'name',
                type: 'string'
            }, {
                name: 'business',
                type: 'string'
            }, {
                name: 'id',
                type: 'int'
            }, {
                name: 'review',
                type: 'string'
            }
        ], // fields
        validations: [{
                field: 'name',
                type: 'presence',
                error: 'Name must be present',
                message: 'Name is required.'
            }, {
                field: 'business',
                type: 'presence',
                message: 'Place is required.'
            }, {
                field: 'review',
                type: 'presence',
                message: 'Review is required.'

            }
        ] // validations
    } // config
}); // define()

我如何设置名称、业务、ID 并查看从表单中获取的值

4

3 回答 3

0

您可以使用表单的updateRecord函数。不要像@Mayur 在他的示例中显示的那样手动设置所有属性。

像这样的东西:

{
    xtype: 'button',
    text: 'Submit',
    ui: 'confirm',
    handler: function () {
        var formPanel = this.up('formpanel'); //Get the formpanel
        var form = formPanel.getForm(); //Get the basicform instance
        var record = form.getRecord(); //Get your record loaded in the form
        form.updateRecord(record); //Update your record with the current form values
        var errors = record.validate(); //Validate your record

        console.log('Number of errors: ' + errors.getCount());

        if (!errors.isValid()) {
            console.log('Number of errors: ' + errors.getCount());

            errors.each(function (item, index, length) {
                // Each item in the errors collection is an instance of the Ext.data.Error   class.
                console.log('Field "' + item.getField() + '" ' + item.getMessage());
            });
            Ext.Msg.alert('Form is invalid!');
        } 
        //...
    }
}
于 2013-03-26T10:10:30.317 回答
0

我有类似的问题...JSF + Richfaces 基本上,我有多个标签...类似于...(不确切的代码)

<rich:tab name="a">
  <inputText id="a1" values="">
  <inputText id="a2" values="">
</rich:tab>

<rich:tab name="b">
  <inputText id="b1" values="">
  <inputText id="b2" values="">
</rich:tab>

步骤 1)用户首先将转到选项卡“a”并将“a1”值更改为“newValue”2)不提交表单..转到选项卡“b”。由于用户没有提交表单,用户应该收到警告消息说..“您在选项卡 a 中有未保存的数据”....

如何实施?

谢谢..真的很感激。

于 2013-07-18T00:16:39.527 回答
0

首先获取您的视图实例

var reviewCheckForm = this.getReviewCheck();

然后从中取出记录

var currentForm = reviewCheckForm.getRecord();

然后从同一个表单中获取新值

var newValues = reviewCheckForm.getValues();

然后将新值设置到记录并验证它

currentForm.set("name", newValues.name);
currentForm.set("business", newValues.business);
currentForm.set("review", newValues.review);

然后验证它

var errors = currentForm.validate();

if (!errors.isValid()) {
    Ext.Msg.alert('Wait!', errors.getByField("title")[0].getMessage(), Ext.emptyFn);
    currentForm.reject();
    return;
}

你可以按照这个简单的教程来获得更多的理解和参考,这里是模型验证部分。

于 2013-03-26T05:17:31.847 回答