vinejs / vine

VineJS is a form data validation library for Node.js
https://vinejs.dev
MIT License
1.02k stars 21 forks source link

[Question] Creating rules on vine "VineArray" #27

Open shankiflang opened 5 months ago

shankiflang commented 5 months ago

Package version

"@adonisjs/core": "^6.2.2", "@vinejs/vine": "^1.7.0"

Describe the bug

Hey, I have an array that I want to make conditional depending on whether or not an object is present in my database. On the doc it's explained for VineString, but I can't figure out how to do it with VineArray. Does anyone have any ideas?

thetutlage commented 5 months ago

Its same for all the schema classes, be it VineString, VineObject, or VineArray.

shankiflang commented 5 months ago

Its same for all the schema classes, be it VineString, VineObject, or VineArray.

Here's the problem I'm having with VineArray: image

shankiflang commented 5 months ago

@thetutlage I can't seem to add a custom rule to the Array type. When I copy the doc for the unique() rule, and remove the string checks, it isn't executed, but it is on a string() entry. None of my rules are executed on array(), is this normal?

thetutlage commented 5 months ago

Hello, can you please share a reproduction repo with for the same and I will try to debug and see if I can provide some helpful info

shankiflang commented 5 months ago

Hello, can you please share a reproduction repo with for the same and I will try to debug and see if I can provide some helpful info

You can find a repo here: https://github.com/shankiflang/repo-repro. As far as I can see, the implicit : true doesn't work.

If I set the data for a message to:

{
    "postId": 1
}

the isRequiredIfPostPublishedRule() method is not called. In contrast, if I put :

{
    "postId": 1,
    "config": [
        {
            "hi": "foo"
        }
    ]
}

The method is called.

thetutlage commented 5 months ago

Thanks for the repro. I will look into it once I get some time and see if rules on an array respect the implict flag or not.