2016-02-21 1 views
0

Я установил и создал пользовательский контроллер CRUD для одного объекта. Я хочу выполнить некоторые действия после обновления сущности. Как я могу достичь этого с помощью контроллера CRUD? Я заметил, что классы Admin* имеют preUpdate и postUpdate методы для этой цели, я мог бы их использовать, но, я думаю, эта логика должна быть помещена в контроллеры.Как использовать `postUpdate` в контроллерах CRUD?

Самый простой способ я вижу это переписывание editAction (переопределить этот метод в моем контроллере, копировать/код из базы CRUDController и добавить вызова собственного postUpdate), но копировать/вставить это плохо :) Может быть, я пропустил какой-то способ?

ответ

1

Если вы просмотрели код, написанный в sonata admin editAction(), в CRUDController, вы можете увидеть его метод update() вызывающего администратора.

$object = $this->admin->update($object); 

вы можете просмотреть update() метод в сонатном базовый классе администратора перед вызовом менеджера модели упорствовать объект имеет preUpdate() вызов и те же случай для postUpdate() после вызова менеджера модели.

Это означает, что вы пытаетесь реализовать pre или post действия для вашей сущности, вам нужно написать свою собственную логику, но вопрос в том, почему вы хотите переделать или переписать любое доступное действие? вы можете использовать уже предоставленные pre или post крючки.

+0

«pre или post hooks» - вы имеете в виду события жизненного цикла объекта? –

+0

@SergeyChizhik by pre/post hooks в отношении класса администратора i означает preUpdate и posUpdate –

+0

Получил его. На самом деле я могу, но я только подумал, что классы администратора должны знать, как будут представлены сущности, и все поведение должно быть помещено в контроллеры. –

 Смежные вопросы

  • Нет связанных вопросов^_^