vendredi 11 mars 2016

Laravel validator not working

I have this json input:

{
  "edit_vote": {
    "id": "5",
    "new_description": "something new"
  },
  "delete_vote": {
    "id": "7"
  },
  "sub_item": {
    "add_sub_items": [
      {
        "sub_item": {
          "description": "desc",
          "url": "url"
        }
      },
      {
        "sub_item": {
          "description": "desc",
          "url": "url"
        }
      },
      {
        "sub_item": {
          "description": "desc",
          "url": "url"
        }
      }
    ],
    "edit_sub_items": [
      {
        "sub_item": {
          "id": "123",
          "description": "desc",
          "url": "url"
        }
      },
      {
        "sub_item": {
          "id": "123",
          "description": "desc",
          "url": "url"
        }
      },
      {
        "sub_item": {
          "id": "123",
          "description": "desc",
          "url": "url"
        }
      }
    ],
    "delete_sub_item": [
      {
        "sub_item": {
          "id": "23"
        }
      },
      {
        "sub_item": {
          "id": "23"
        }
      },
      {
        "sub_item": {
          "id": "23"
        }
      }
    ]
  }
}

My conditions are: ATLEAST one of edit_vote OR delete_vote OR sub_item must be present.

  • if edit_vote is present, it must have id field and new description field.
  • If delete_vote is present, it must have id field
  • if sub_item is present, it must be an array (I have not reached this part yet)

This is the validation I am using (laravel 5.1):

                $rules["edit_vote"] = "required_without_all:delete_vote,sub_item";
                $rules["delete_vote"] = "required_without_all:edit_vote,sub_item";
                $rules["sub_item"] = "required_without_all:edit_vote,delete_vote";

                $rules["edit_vote.id"] = "required_with:edit_vote|integer";
                $rules["edit_vote.new_description"] = "required_with:edit_vote|String";

                $rules["delete_vote.id"] = "required_with:delete_vote.id";

But, the problem comes, when I have this :

"delete_vote": {
      }

, instead of

"delete_vote": {
        "id": "7"
      }

My validator seems to think its valid.

What is the problem ?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire