私は、Variant モデルを拡張して、その上にフィールドを追加して、こちらのガイドに従って製品で使用できるようにしようとしています。
製品を作成しようとするたびにこのエラーが発生しました
フォームのビュー データはクラス Faumix\ProductPriceBundle\Entity\Variant のインスタンスであると予想されますが、クラス Sylius\Bundle\CoreBundle\Model\Variant のインスタンスです。このエラーを回避するには、「data_class」オプションを null に設定するか、クラス Sylius\Bundle\CoreBundle\Model\Variant のインスタンスを Faumix\ProductPriceBundle\Entity\Variant のインスタンスに変換するビュー トランスフォーマーを追加します。500 内部サーバー エラー - LogicException
ここに私のエンティティがあります
<?php
namespace Faumix\ProductPriceBundle\Entity;
use Sylius\Bundle\CoreBundle\Model\Variant as BaseVariant;
class Variant extends BaseVariant{
protected $unitCost;
protected $landedCost;
protected $averagePrice;
protected $profitMargin;
protected $discountA;
protected $discountB;
protected $supplier;
protected $supplierCurrency;
protected $supplierPrice;
protected $reorderLevel;
/**
* {@inheritdoc}
*/
public function setUnitCost($unitCost)
{
$this->unitCost = $unitCost;
return $this;
}
/**
* {@inheritdoc}
*/
public function getUnitCost()
{
return $this->unitCost;
}
/**
* {@inheritdoc}
*/
public function setLandedCost($landedCost)
{
$this->landedCost = $landedCost;
return $this;
}
/**
* {@inheritdoc}
*/
public function getLandedCost()
{
return $this->landedCost;
}
/**
* {@inheritdoc}
*/
public function setAveragePrice($averagePrice)
{
$this->averagePrice = $averagePrice;
return $this;
}
/**
* {@inheritdoc}
*/
public function getAveragePrice()
{
return $this->averagePrice;
}
/**
* {@inheritdoc}
*/
public function setProfitMargin($profitMargin)
{
$this->profitMargin = $profitMargin;
return $this;
}
/**
* {@inheritdoc}
*/
public function getProfitMargin()
{
return $this->profitMargin;
}
/**
* {@inheritdoc}
*/
public function setDiscountA($discountA)
{
$this->discountA = $discountA;
return $this;
}
/**
* {@inheritdoc}
*/
public function getDiscountA()
{
return $this->discountA;
}
/**
* {@inheritdoc}
*/
public function setDiscountB($discountB)
{
$this->discountB = $discountB;
return $this;
}
/**
* {@inheritdoc}
*/
public function getDiscountB()
{
return $this->discountB;
}
/**
* {@inheritdoc}
*/
public function setSupplierPrice($supplierPrice)
{
$this->supplierPrice = $supplierPrice;
return $this;
}
/**
* {@inheritdoc}
*/
public function getSupplierPrice()
{
return $this->supplierPrice;
}
/**
* {@inheritdoc}
*/
public function setReorderLevel($reorderLevel)
{
$this->reorderLevel = $reorderLevel;
return $this;
}
/**
* {@inheritdoc}
*/
public function getReorderLevel()
{
return $this->reorderLevel;
}
/**
* {@inheritdoc}
*/
public function setSupplier($supplier)
{
$this->supplier = $supplier;
return $this;
}
/**
* {@inheritdoc}
*/
public function getSupplier()
{
return $this->supplier;
}
/**
* {@inheritdoc}
*/
public function setSupplierCurrency($currency)
{
$this->supplierCurrency = $currency;
return $this;
}
/**
* {@inheritdoc}
*/
public function getSupplierCurrency()
{
return $this->supplierCurrency;
}
}
ここに私のエンティティxmlファイルがあります
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"
xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"
>
<entity name="Faumix\ProductPriceBundle\Entity\Variant" table="sylius_variant">
<field name="unitCost" column="unit_cost" type="float" nullable="true">
<gedmo:versioned />
</field>
<field name="landedCost" column="landed_cost" type="float" nullable="true"/>
<field name="profitMargin" column="profitMargin" type="integer" nullable="true"/>
<field name="averagePrice" column="average_price" type="float" nullable="true" />
<field name="discountA" column="discount_a" type="float" nullable="true">
<gedmo:versioned />
</field>
<field name="discountB" column="discount_b" type="float" nullable="true">
<gedmo:versioned />
</field>
<field name="reorderLevel" column="reorder_level" type="integer" nullable="true">
<gedmo:versioned />
</field>
<field name="supplierPrice" column="supplier_price" type="float" nullable="true">
<gedmo:versioned />
</field>
<field name="supplier" column="supplier" type="string" nullable="true">
<gedmo:versioned />
</field>
<field name="supplierCurrency" column="supplier_currency" type="string" nullable="true">
<gedmo:versioned />
</field>
<gedmo:loggable />
</entity>
</doctrine-mapping>
テーブルを更新する php app/console doctrine:schema:update --force を実行しても、これまでのところすべて問題ありません
フォームを拡張しようとしましたが、すべてのフィールドを追加しませんでした。
EDIT 1 フォームを拡張しましたが、別のエラーが発生しました
プロパティ "unitCost" もメソッド "getUnitCost()"、"isUnitCost()"、"hasUnitCost()"、"__get()" のいずれも存在せず、クラス "Sylius\Bundle\CoreBundle\Model\変異体"。500 内部サーバー エラー - NoSuchPropertyException
そしてこれがフォームクラス
namespace Faumix\ProductPriceBundle\Form\Type;
use Sylius\Bundle\CoreBundle\Form\Type\VariantType as BaseVariantType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class VariantType extends BaseVariantType {
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder
->add('unitCost', 'text', array(
'data_class' => 'Sylius\Bundle\CoreBundle\Model\Variant',
'label' => 'Unit Cost',
))
->add('landedCost', 'sylius_money', array(
'label' => 'Landed Cost',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('averagePrice', 'text', array(
'label' => 'average Price',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('profitMargin', 'text', array(
'label' => 'profit Margin',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('discountA', 'text', array(
'label' => 'discount A',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('discountB', 'text', array(
'label' => 'discount B',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('supplier', 'text', array(
'label' => 'supplier',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('supplierCurrency', 'text', array(
'label' => 'supplierCurrency',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('supplierPrice', 'text', array(
'label' => 'supplier Price',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
->add('reorderLevel', 'text', array(
'label' => 'reorder Level',
'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant'
))
;
}
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver
->setDefaults(array(
// 'data_class' => 'Faumix\ProductPriceBundle\Entity\Variant',
'data_class' => 'Sylius\Bundle\CoreBundle\Model\Variant',
'validation_groups' => $this->validationGroups,
'master' => false
))
;
}
}
data_class を定義せずに試してみましたが、影響がないようです
誰かがこれで私を助けることができれば幸いです
よろしく