2017-04-26 116 views
0

想象一下,我有一个具有3个属性(creationTimestamp,name和price)的“Product”类。Symfony - 动态编辑属性

我不希望用户在创建对象后更改名称。没问题:我向FormType添加了一个Event Subscriber。

此外,我从不在创建和编辑窗体中显示creationTimestamp。只有当我创建对象时,我才需要在后台填充此字段。编辑我的对象时,它不应该改变。问题:我应该将逻辑放在Controller还是其他地方(即生命周期回调)。最佳做法是什么?一个语法示例将非常感谢。预先感谢您

+0

你在使用Doctrine实体吗? – LBA

+0

是的,我正在使用Doctrine实体 – Marc

+0

检查了这一点:http://stackoverflow.com/questions/36028891/update-createdat-updatedat-fields-automatically-in-symfony3-doctrine – LBA

回答

0

你可以在构造函数中做到这一点。

class Product 
{ 
    public function __construct() 
    { 
     $nowTimestamp = 123456789; //Here your timestamp value 
     $this->setCreationTimestamp($nowTimestamp); //Assuming that you have defined setter function 
    } 
} 
+0

当处理Doctrine实体,你不应该依赖因为它不是由Doctrine调用的构造函数。这就是为什么我在评论中为PrePersist(和PreUpdate)建议生命周期回调的原因。 – LBA

+0

是的,但我怎么能确定它是否是一个新的对象或不在生命周期回调? – Marc

+0

只使用PrePersist – LBA