Я использую платформу API для своего приложения для бронирования.
В бронировании много отношений: 1 с отделом.
Когда я создаю новое бронирование, отправив запрос POST с пустой строкой в качестве значения для отдела, я ожидаю ошибку проверки, но вместо этого я получил «неверный IRI»
Объект бронирования
/**
* @ApiResource(
* itemOperations={
* "get"={
* "normalization_context"={
* "groups"={"read-item"}
* }
* },
* "put"={
* "denormalization_context"={
* "groups"={"put"}
* }
* }
* }
* @ORM\Entity(repositoryClass="App\Repository\BookingRepository")
class Booking
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Department", inversedBy="bookings")
* @ORM\JoinColumn(nullable=false)
* @Assert\NotBlank
* @Groups({"read-item", "put"})
*/
private $department;
}
Субъект отдела
/**
* @ApiResource(
* collectionOperations={"get"},
* itemOperations={"get"}
* )
* @ORM\Entity(repositoryClass="App\Repository\DepartmentRepository")
*/
class Department
{
/**
* @ORM\OneToMany(targetEntity="App\Entity\Booking", mappedBy="department")
*/
private $bookings;
}
например, пример запроса на создание бронирования (POST)
{
"department": ""
}
Ошибка:
{
"@context": "/api/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "Invalid IRI \"\".",
"trace": [
{
"namespace": "",
"short_class": "",
"class": "",
"type": "",
"function": "",
"file": "/var/www/html/vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php",
"line": 418,
"args": []
},
{
"namespace": "ApiPlatform\\Core\\Serializer",
"short_class": "AbstractItemNormalizer",
"class": "ApiPlatform\\Core\\Serializer\\AbstractItemNormalizer",
"type": "->",
"function": "denormalizeRelation",
"file": "/var/www/html/vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php",
"line": 685,
"args": [
[
"string",
"department"
],
[
"object",
"ApiPlatform\\Core\\Metadata\\Property\\PropertyMetadata"
],
[
"string",
"App\\Entity\\Department"
],
[
"string",
""
],
[
"string",
"json"
],
[
"array",
{
"operation_type": [
"string",
"collection"
],
"collection_operation_name": [
"string",
"post"
],
"api_allow_update": [
"boolean",
false
],
"resource_class": [
"string",
"App\\Entity\\Department"
],
"input": [
"null",
null
],
"output": [
"null",
null
],
"request_uri": [
"string",
"/api/bookings"
],
"uri": [
"string",
"http://localhost/api/bookings"
],
"skip_null_values": [
"boolean",
true
],
"api_denormalize": [
"boolean",
true
],
"cache_key": [
"string",
"db505854694e53aec6831eb427a03028"
]
}
]
]
},
}
Пожалуйста, сообщите, если я что-то упустил