Symfony2:服务和嵌套类

时间:2016-02-09 18:43:52

标签: symfony

我有一个班级Commande和一个班级Panier。 第一个包含第二个作为属性。

第一个也被定义为服务。 我想使用我的Commande对象的相同实例,但我也想使用其Panier对象的相同实例。

在我的第一次测试后看起来比每次重新创建Panier对象;例如,如果我尝试在其中添加一些文章,则文章不会保存。

有什么特别的事吗?我是否还必须将Panier类定义为服务并将其注入Command 1?

class Commande
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @Assert\Type(type="LeJardinEbene\Bundle\Entity\Panier")
 *
 * @ORM\OneToOne(targetEntity="LeJardinEbene\Bundle\Entity\Panier", inversedBy="commande")
 * @ORM\JoinColumn(nullable=false)
 */
private $panier;

public function __construct() {
    $this->setPanier(new Panier());
}

服务:

commande:
    class:  LeJardinEbene\Bundle\Entity\Commande
    tags:
        - { name: commande, alias: commande }

在我的控制器中,以下是我获取Panier对象的方法:

$panier = $this->get('commande')->getPanier();

谢谢你们。

此致

1 个答案:

答案 0 :(得分:1)

每次创建一个Command时,你都会实例化一个新的Panier(),所以每次都会重新创建它。

尝试传入$ panier作为构造函数参数

public function __construct(Panier $panier) {
    $this->panier = $panier;
}