2013-09-06 3 views
2

Как применить код к каждому объекту, отображаемому в представлении списка администраторов?Как обрабатывать каждый объект в представлении списка SonataAdminBundle?

Например, если у меня есть TagManager и вам необходимо загрузить теги для каждого отображаемого объекта, как это сделать? Есть ли способ переопределить администратор сущности или я могу привязать к событию формы списка? Я не мог найти места для этого.

Я не хочу связываться с событием onLoad объекта.

ответ

4

EDIT: В вашем entityAdminController:

public function listAction() 
{ 
    if (false === $this->admin->isGranted('LIST')) { 
     throw new AccessDeniedException(); 
    } 

    $datagrid = $this->admin->getDatagrid(); 
    $formView = $datagrid->getForm()->createView(); 

    foreach($datagrid->getResults() as $object) 
    { 
     //do what you want with $object 
    } 

    // set the theme for the current Admin Form 
    $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme()); 

    return $this->render($this->admin->getTemplate('list'), array(
     'action' => 'list', 
     'form'  => $formView, 
     'datagrid' => $datagrid 
    )); 
} 
+0

Entity не имеет доктрины ассоциации с 'Tag' лица (и не может быть один, так как метки являются глобальными), поэтому я должен вручную установить метки для чтобы они были доступны из шаблона. – TautrimasPajarskas

+0

О, у вашего редактирования есть хорошая идея (: Спасибо, попробуем это – TautrimasPajarskas