Не могу зарегистрировать объект в моей базе данных с помощью формы symfony

Я новичок в symfony и пытаюсь зарегистрировать сущность в своей базе с помощью формы. Вот форма:

<?php
namespace App\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\TelType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;

class OfferType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title', TextType::class, array('label' => '*Title: ' , 'attr' => array('class' => 'input2')))
        ->add('nameofgame', TextType::class, array('label' => 'Name of the Game:','attr' => array('class' => 'create button1')))
        ->add('description', TextType::class, array('label' => 'Description: ' , 'attr' => array('class' => 'input2')))
        ->add('price', MoneyType::class, array('label' => '*Price: ' , 'attr' => array('class' => 'input2')))
        ->add('numbertelephone', TelType::class, array('label' => 'Telephone Number:','attr' => array('class' => 'create button1')))
        ->add('save', SubmitType::class, array('label' => 'Post Offer','attr' => array('class' => 'create button1')))
    ;
}
}

Вот мой контроллер:

/**
 * @Route("/BoardFind/Trade/RegisterOffer", name = "RegisterOffer")
 * @param Request $request
 * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
 */
public function register(Request $request)
{
    $Offer = new TradeOffer();
    $form = $this->createForm(OfferType::class, $Offer);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $Offer = $form->getData();
        echo maleee;
        $entityManager = $this->getDoctrine()->getManager();

        $session = $this->get('session');
        $userId = $session->get("id");
        $user = $this->getDoctrine()
            ->getRepository(User::class)->find($userId);
        $Offer->setUser($user);
        $Offer->setTraderName($user->getName());
        $Offer->setTraderLastName($user->getLastName());
        $Offer->setUsername($user->getUsername());
        $Offer->setTraderEmail($user->getEmail());

        $entityManager->persist($Offer);
        $entityManager->flush();

        $flashbag = $this->get('session')->getFlashBag();
        $flashbag->add("SuccessfullRegister", "You successfully registered your offer!");
        return $this->redirectToRoute('Trade');
    }

    return $this->render('home/RegisterOffer.html.twig', array(
        'form' => $form->createView(),
    ));

}

Когда я пытаюсь зарегистрировать предложение, оно говорит, что "Ожидаемый аргумент типа "App\Entity\double", указан "double"". но дело в том, что я считаю свойство сущности правильным. Вот свойство:

/**
 * @Assert\Type("double")
 * @Assert\NotBlank()
 */
private $price;

Если вы хотите изображение ошибки здесь, это так. Так в чем проблема?

Кажется, что система типов PHP не позволяет использовать double в качестве подсказки типа или возвращаемого типа. Возможно, потому что это просто псевдоним для float. В вашем сеттере и геттере попробуйте заменить double на float. Вы также можете вместо этого использовать string, если вы используете строгую типизацию и более безопасные вычисления с плавающей запятой с использованием расширения bcmath.

dbrumann 10.02.2019 21:44

Спасибо, float помог написать ответ, чтобы я мог пометить его как решенный

user11003466 10.02.2019 22:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В PHP double является псевдонимом для float. При использовании подсказок скалярного типа или возвращаемых типов этот псевдоним не поддерживается, и вместо него необходимо использовать фактический тип. Это поведение сравнимо с поддерживаемым bool, но не с boolean.

Другими словами, в ваших геттерах и сеттерах вы должны вместо этого ссылаться на float.

Другие вопросы по теме