У меня есть конечная точка postOrder - создайте сущность заказа. В порядке сущности у меня есть поля с типом DateTime, и я хочу, когда кто-то пишет строку вместо DateTime У меня есть «Недействительно, должно быть DateTime». Для других полей я использую, как этоSymfony Assert DateTime JMSSerializer
* @Assert\Length(min=3, max=255)
или
* @Assert\Regex(
* pattern= "/^[\d() \-+]+$/",
* message= "This text cannot contain numbers"
*)
или
* @Assert\NotBlank()
Я получаю все запросы, то сериализации то десериализации для конкретного лица при Validate и получить информацию от утверждают в конечной точке , но для DateTime это не работает Я использую FosRestBundle и JMSSerializer, это мое действие
/**
* Post Order.
*
* @ApiDoc(
* resource = true,
* description = "Post Order",
* parameters={
* {"name"="comment", "dataType"="string", "required"=false, "description"="comment"},
* {"name"="interview_date", "dataType"="date", "required"=false, "description"="date conect for developer"},
* {"name"="contact_date", "dataType"="date", "required"=false, "description"="date contact fir TIM"}
*
* },
* statusCodes = {
* 200 = "Returned when successful",
* 400 = "Returned secret token is not valid"
* },
* section="Order"
*)
*
* @RestView()
*
* @param Request $request
*
* @return View
*
* @throws NotFoundHttpException when not exist
*/
public function postOrderAction(Request $request)
{
$data = $request->request->all();
$data = $this->get('serializer')->serialize($data, 'json');
$serviceLead = $this->get('serializer')->deserialize($data, 'Artel\ProfileBundle\Entity\CodeServiceLead', 'json');
$errors = $this->get('validator')->validate($serviceLead);
if (count($errors) > 0) {
$view = $this->view($errors, 400);
return $this->handleView($view);
}
и поля
class Orders
{
/**
* @var string
*
* @ORM\Column(name="comment", type="string", nullable=true)
* @Groups({"get_all_orders_admin", "get_all_orders", "for_vip"})
*/
protected $comment;
/**
* @var \DateTime
* @ORM\Column(name="interview_date", type="date", nullable=true)
* @Groups({"get_all_orders_admin", "get_all_orders", "for_vip"})
* @Assert\DateTime()
*/
protected $interview_date;
/**
* @var \DateTime
* @ORM\Column(name="contact_date", type="date", nullable=true)
* @Groups({"get_all_orders_admin", "get_all_orders", "for_vip"})
* @Assert\DateTime()
*/
protected $contact_date;
Теперь у меня есть ошибки, когда я пытаюсь десериализации для заказа объекта
{
"error": {
"code": 500,
"message": "Internal Server Error",
"exception": [
{
"message": "Invalid datetime \"some_string\", expected format Y-m-d\\TH:i:sO.",
"class": "JMS\\Serializer\\Exception\\RuntimeException",
Как вернуть правильную ошибку или утверждать, без 500, в этой ситуации?
у меня есть * @RestView(). Thnks, у меня есть информационная ошибка. Thnks –