Home > Mobile >  VueJs not sending data via Inertia to Laravel?
VueJs not sending data via Inertia to Laravel?

Time:09-05

I have question it seems like when I try to send some data via Inertia I dont recieve any in Laravel for some reason any suggestion? Can it have to do something with the fact that the object is proxy object ? Here are some images:

dd() in php controlelr

console.log() of the object before beeing sent via Inertia

Code of how I send the data the console log right before sending it

UPDATE:

This is how I add page object to array of pages:

this.Pages.push({
            "name": "Untitled",
            "icon": "home",
            "order": order,
            "sections": [],
            "DisplayName":true,
            "Banner":"Medium",
            "Published":"Published",
            "DisplayLogo":true,
            "media":{
                'BackgroundImage': null,
                'LogoImage': null,
                'BackgroundImageHeight': null,
                'LogoImageHeight': null,
                'BackgroundImageStyle': {
                    "value": []
                },
                "LogoImageStyle": {
                    "value": []
                },
            }
        });

This is my inertia form:

        saveForm: {           
            applications: [],
        },

This is whole save() method:

 Save() {
        if(this.localProduct.translation.applications.mobile_label[this.currentMobileLabel] != undefined){
            if(this.localProduct.translation.applications.mobile_label[this.currentMobileLabel].data == undefined){
                this.localProduct.translation.applications.mobile_label[this.currentMobileLabel] = {
                    "Pages": this.Pages,
                    "media": this.media,
                    "name": this.localProduct.translation.applications.mobile_label[this.currentMobileLabel].name,
                    "active": this.localProduct.translation.applications.mobile_label[this.currentMobileLabel].active,
                };
            }
            else{
                this.localProduct.translation.applications.mobile_label[this.currentMobileLabel] = {
                    "Pages": this.Pages,
                    "media": this.media,
                    "name": this.localProduct.translation.applications.mobile_label[this.currentMobileLabel].name,
                    "active": this.localProduct.translation.applications.mobile_label[this.currentMobileLabel].active,
                    "data" : this.localProduct.translation.applications.mobile_label[this.currentMobileLabel].data,
                };
            }
        }    
        this.saveForm.applications = toRaw(this.localProduct.translation.applications);
        
        console.log(this.saveForm);

        Inertia.post(this.route(`product.translations.applications`,{translation: this.localProduct.translation.id}),this.saveForm);
    },

The applications should be array, the mobile_label should be also array.As it is.

!!!IMPORTANT ALSO!!! All of this code worked before the project started to shift to vue js 3 and I suppose many libraries had to be updated/exchanged for others.

CodePudding user response:

According to Inertia's documentation the first parameter expected when using Inertia.post() is a URL. Does all of this.route(`product.translations.applications`,{translation: thislocalProduct.translation.id}) return a URL?

CodePudding user response:

To anyone who's having same problem check your array/object assiging to your variables there could be the mistake like in mine I fixed mine with this:

        this.saveForm.applications = toRaw(this.localProduct.translation.applications);
        var fixed = Object.assign({},this.localProduct.translation.applications);
        Inertia.post(this.route(`product.translations.applications`,{translation: this.localProduct.translation.id}),fixed);
  • Related