Add proper length constraint validations to all string mapped ORM fields, so they show a nice validation error, instead of a 500 error

Fixes issue #544
This commit is contained in:
Jan Böhmer 2024-03-06 19:46:11 +01:00
parent 113e5b3bcd
commit dc7c13479c
17 changed files with 43 additions and 0 deletions

View file

@ -50,6 +50,7 @@ use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\Length;
/**
* This unit represents the unit in which the amount of parts in stock are measured.

View file

@ -44,6 +44,7 @@ use App\Entity\Base\TimestampTrait;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\Length;
/**
* This entity describes a part association, which is a semantic connection between two parts.
@ -86,6 +87,7 @@ class PartAssociation extends AbstractDBElement implements TimeStampableInterfac
#[Assert\Expression("this.getType().value !== 0 or this.getOtherType() !== null",
message: 'validator.part_association.must_set_an_value_if_type_is_other')]
#[Groups(['part_assoc:read', 'part_assoc:write'])]
#[Length(max: 255)]
protected ?string $other_type = null;
/**

View file

@ -51,6 +51,7 @@ use Exception;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
/**
@ -165,6 +166,7 @@ class PartLot extends AbstractDBElement implements TimeStampableInterface, Named
*/
#[ORM\Column(type: Types::STRING, nullable: true)]
#[Groups(['part_lot:read', 'part_lot:write'])]
#[Length(max: 255)]
protected ?string $vendor_barcode = null;
public function __clone()

View file

@ -28,6 +28,7 @@ use App\Entity\Parts\Part;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\Length;
/**
* Advanced properties of a part, not related to a more specific group.
@ -62,6 +63,7 @@ trait AdvancedPropertyTrait
#[Assert\Length(max: 100)]
#[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])]
#[ORM\Column(type: Types::STRING, length: 100, unique: true, nullable: true)]
#[Length(max: 100)]
protected ?string $ipn = null;
/**

View file

@ -30,6 +30,7 @@ use App\Validator\Constraints\Selectable;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\Length;
/**
* In this trait all manufacturer related properties of a part are collected (like MPN, manufacturer URL).
@ -58,6 +59,7 @@ trait ManufacturerTrait
*/
#[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])]
#[ORM\Column(type: Types::STRING)]
#[Length(max: 255)]
protected string $manufacturer_product_number = '';
/**