Symfony - 无法转换属性路径launchdate的值:预期\ DateTimeInterface

时间:2017-12-07 14:32:49

标签: php symfony datetime doctrine-orm symfony4

我正在尝试添加价格包含launchdate的新产品。 这导致标题中的错误。

Product.php

...
public function __construct() {
    $this->clients = new ArrayCollection();
    $this->priceupdates = new ArrayCollection();
    $this->currentPrice = new PriceUpdate();
}
...

ProductController.php

...
public function newAction(Request $request) {
    $entity = new Product();
    $form = $this->createForm(ProductType::class, $entity);
...

ProductType.php

...
public function buildForm(FormBuilderInterface $builder, array $options) {

    $builder
    ->add('description', TextType::class)
    ->add('ProductPriceUpdate', ProductPriceUpdateType::class ,array(
        'data_class' => PriceUpdate::class))
    ->add('clients', EntityType::class, array(
        'class' => 'AppBundle:Client',
        'choice_label' => 'naam',
        'multiple' => true
        ))
    ->add('reset', ResetType::class, array(
        'label' => 'Reset',
        'attr'  => array(
            'class' => 'btn btn-danger'
        )))
    ->add('submit', SubmitType::class, array(
        'label' => 'Create',
        'attr'  => array(
            'class' => 'btn btn-success'
        )));
}
...

ProductPriceUpdateType.php

class ProductPriceUpdateType extends AbstractType {

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
        ->add('price', MoneyType::class)
        ->add('launchdate', DateType::class);
    }
...
}

PriceUpdate.php

public function __construct() {
        $this->launchdate = \DateTime::createFromFormat('m/d/Y', 'now');

堆栈跟踪

Symfony\Component\Form\Exception\TransformationFailedException:
Unable to transform value for property path "launchdate": Expected a \DateTimeInterface.

  at vendor\symfony\symfony\src\Symfony\Component\Form\Form.php:1107
  at Symfony\Component\Form\Form->normToView(false)
     (vendor\symfony\symfony\src\Symfony\Component\Form\Form.php:350)
  at Symfony\Component\Form\Form->setData(false)
     (vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper.php:49)
  at Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper->mapDataToForms(object(PriceUpdate), object(RecursiveIteratorIterator))
     (vendor\symfony\symfony\src\Symfony\Component\Form\Form.php:383)
  at Symfony\Component\Form\Form->setData(object(PriceUpdate))
     (vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper.php:49)
  at Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper->mapDataToForms(object(Product), object(RecursiveIteratorIterator))
     (vendor\symfony\symfony\src\Symfony\Component\Form\Form.php:383)
  at Symfony\Component\Form\Form->setData(object(Product))
     (vendor\symfony\symfony\src\Symfony\Component\Form\Form.php:487)
  at Symfony\Component\Form\Form->initialize()
     (vendor\symfony\symfony\src\Symfony\Component\Form\FormBuilder.php:226)
  at Symfony\Component\Form\FormBuilder->getForm()
     (vendor\symfony\symfony\src\Symfony\Component\Form\FormFactory.php:30)
  at Symfony\Component\Form\FormFactory->create('AppBundle\\Form\\Type\\ProductType', object(Product), array())
     (vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait.php:331)
  at Symfony\Bundle\FrameworkBundle\Controller\Controller->createForm('AppBundle\\Form\\Type\\ProductType', object(Product))
     (src\AppBundle\Controller\ProductController.php:82)
  at AppBundle\Controller\ProductController->newAction(object(Request))
  at call_user_func_array(array(object(ProductController), 'newAction'), array(object(Request)))
     (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php:153)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php:68)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php:169)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (web\app_dev.php:29)
  at require('C:\\Users\\rsluimers\\PhpstormProjects\\LunchApp\\LunchApp\\web\\app_dev.php')
     (vendor\symfony\symfony\src\Symfony\Bundle\WebServerBundle\Resources\router.php:42)

我没有看到它有什么问题,我不明白为什么会出现\ DateTimeInterface。

1 个答案:

答案 0 :(得分:0)

看起来'now'不能用于从格式创建datetime并且必须使用time()时。

PriceHistory.php

...
public function __construct() {
    $this->activedate = DateTime::createFromFormat('U', time());
...