Ну, есть пакет для таких вещей, DoctrineExtensionsBundle .Он получил метку времени и слаг.
Если вы хотите сделать это самостоятельно, место определенно находится в самой сущности, поскольку вы не хотите возиться с вашим контроллером.Вот как я делаю Timestampable, поскольку я не использую DoctrineExtensionsBundle:
/**
* @ORM\Entity
* @ORM\Table(name="entity")
* @ORM\HasLifecycleCallbacks
*/
class Entity {
// ...
/**
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
protected $createdAt;
/**
* @ORM\Column(name="updated_at", type="datetime", nullable=false)
*/
protected $updatedAt;
/**
* @ORM\prePersist
*/
public function prePersist() {
$this->createdAt = new \DateTime();
$this->updatedAt = new \DateTime();
}
/**
* @ORM\preUpdate
*/
public function preUpdate() {
$this->updatedAt = new \DateTime();
}
// ...
}
Что касается моего решения не использовать Bundle: Когда symfony2 был выпущен как стабильный, этот пакет не существовал (илиэто не было стабильно, я не помню), поэтому я начал делать это самостоятельно, как показано ниже.Поскольку это немного накладные расходы, я продолжал делать это так и никогда не чувствовал необходимости менять это.Если вам нужен Slugable или вы хотите сохранить его просто, попробуйте пакет!