2012-04-06 4 views
0

Мне нужно иметь разбивку на страницы, интегрированную в мой Backend. Я использую sonataAdminBundle. Существует этот класс Sonata \ AdminBundle \ Admin \ Admin, который имеет свойство $ maxPerPage = 25;Symfony2: Как интегрировать разбиение на страницы в sonataAdminBundle?

Итак, как мне переопределить этот класс, чтобы все мои другие классы админов могли иметь разбиение на страницы без повторения кода.

Спасибо!

ответ

2

Используйте инъекции зависимостей. В файле services.xml вы можете добавлять любые методы, которые должны быть вызваны при создании службы администратора.

Файл: ../YourAdminBundle/Resources/config/services.xml:

<?xml version="1.0" ?> 
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 

    <parameters> 
     <!-- You define the maxpage only once --> 
     <parameter key="admin_max_per_page_number">10</parameter> 
    </parameters> 
    <services> 

     <service id="xyz_admin" class="Abc\Bundle\YourAdminBundle\Admin\XyzAdmin"> 
      <tag name="sonata.admin" manager_type="orm" group="xyz_group" label="Xyz"/> 
      <argument /> 
      <argument>Abc\Bundle\YourAdminBundle\Entity\Xyz</argument> 
      <argument>SonataAdminBundle:CRUD</argument> 

      <call method="setMaxPerPage"> 
       <argument>%admin_max_per_page_number%</argument> 
      </call> 
     </service> 

     <!-- ... another admin services... --> 
    </services> 
</container>