Я хочу создать пользовательскую аннотацию created_at
в ZF2
. Я нашел (немецкий) учебник, как построить такую аннотацию в Symfony2.
Кажется, что все легко копировать, кроме регистрации прослушивателя prePersist
.
Код в Symfony:
services: created_at_listener: class: Scandio\Annotations\Driver\CreatedAtDriver tags: - {name: doctrine.event_listener, event: prePersist} arguments: [@annotation_reader]
Любые предложения, как добиться этого в Zend?
Благодаря!
Благодаря Ocramius я нашел другое решение для создания PrePersist
созданного в timestamp:
/** * ... * @ORM\HasLifecycleCallbacks * ... */ class ChangeRequest ... /** * @ORM\Column(type="datetime", nullable=true) * @Form\Attributes({"type":"text"}) * @Form\Options({"label":"Created at"}) * @Form\Exclude() */ protected $created_at; ... /** * @ORM\PrePersist */ public function timestamp() { if(is_null($this->getCreatedAt())) { $this->setCreatedAt(new \DateTime()); } return $this; }
Простое решение:
class ChangeRequest { public function __construct() { $this->created_at=new \DateTime(); } ... /** * @ORM\Column(type="datetime", nullable=true) * @Form\Attributes({"type":"text"}) * @Form\Options({"label":"Created at"}) * @Form\Exclude() */ protected $created_at; ... }
без дорогостоящих событий.