[英]Sonata Media Bundle Override
任何人都可以告訴我如何擴展和覆蓋所有奏鳴曲媒體捆綁功能? 我正在使用Symfony2.3.3和Sonata Master Bundle。
我看到這個文檔http://sonata-project.org/bundles/media/master/doc/index.html我知道基本的東西:如何編寫自定義提供程序,翻譯器等等。基本的東西在安裝后工作但是我不知道 。
我正在尋找覆蓋BaseMediaBundle自定義為例如函數“configureListFields”。
我已經覆蓋了這個包的控制器,但沒有覆蓋BaseMediaAdmin。
這段代碼的問題是我的儀表板實體“Media”消失了!
//在我的services.xml中:
<service id="sonata.media.admin.media" class="Application\Sonata\MediaBundle\Admin\MediaAdmin">
<tag name="sonata.media.admin" manager_type="orm" group="Gestion des médias"
label="Média" />
<argument />
<argument>Application\Sonata\MediaBundle\Entity\Media</argument>
<argument>Application\SonataMediaBundle:MediaAdmin</argument>
<call method="setTranslationDomain">
<argument>SonataMediaBundle</argument>
</call>
</service>
//在我的Application \\ Sonata \\ MediaBundle \\ Admin \\ MediaAdmin中
namespace Application\Sonata\MediaBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Route\RouteCollection;
use Sonata\MediaBundle\Provider\Pool;
use Sonata\MediaBundle\Form\DataTransformer\ProviderDataTransformer;
use Knp\Menu\ItemInterface as MenuItemInterface;
use Sonata\MediaBundle\Admin\BaseMediaAdmin as BaseMediaAdmin;
class MediaAdmin extends BaseMediaAdmin
{
/**
* {@inheritdoc}
*/
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->add('custom', 'string', array('template' => 'SonataMediaBundle:MediaAdmin:list_custom.html.twig'))
->add('enabled', 'boolean', array('editable' => true))
->add('_action', 'actions', array(
'actions' => array(
'view' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
}
同一個問題請問某人: https : //groups.google.com/forum/#!topic / sonata-users / l3D_Vrd0Hm4
我谷歌它但沒有找到。 誰知道?
謝謝!
你必須覆蓋%sonata.media.admin.media.class%
YourSite/MediaBundle/Ressource/config/services.yml
`
parameters:
sonata.media.admin.media.class: YourSite\MediaBundle\Admin\MediaAdmin
services:
custom_name.admin.media:
class: %sonata.media.admin.media.class%
arguments:
- ~
- YourSite\MediaBundle\Entity\Media
- YourSiteMediaBundle:MediaAdmin
- @sonata.media.pool
tags:
- {name: sonata.admin, manager_type: orm, group: admin, label: Médias}
`
並在您的app/config/config.yml
imports:
/** ... **/
- { resource: @YourSiteMediaBundle/Resources/config/services.yml }
sonata_admin:
/** ... **/
dashboard:
groups:
/** ... **/
Médias:
items:
- custom_name.admin.media
# - sonata.media.admin.media
只需稍加一些更改,您就可以重新聲明服務sonata.media.admin.media ,
如下所示,這將有助於您自定義奏鳴曲媒體包的所有方式(控制器,管理員,甚至您可以覆蓋模板)
<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>
<parameter key="sonata.media.admin.media.class">Application\Sonata\MediaBundle\Admin\MediaAdmin</parameter>
</parameters>
<services>
<service id="sonata.media.admin.media" class="%sonata.media.admin.media.class%" public="true">
<tag name="sonata.admin" manager_type="orm" group="%sonata.media.admin.groupname%" label_catalogue="%sonata.media.admin.media.translation_domain%" label="media" label_translator_strategy="sonata.admin.label.strategy.underscore" icon="%sonata.media.admin.groupicon%"/>
<argument/>
<argument>%sonata.media.admin.media.entity%</argument>
<argument>%sonata.media.admin.media.controller%</argument>
<argument type="service" id="sonata.media.pool"/>
<argument type="service" id="sonata.media.manager.category" on-invalid="null"/>
<call method="setModelManager">
<argument type="service" id="sonata.media.admin.media.manager"/>
</call>
<call method="setTranslationDomain">
<argument>%sonata.media.admin.media.translation_domain%</argument>
</call>
<call method="setTemplates">
<argument type="collection">
<argument key="inner_list_row">@SonataMedia/MediaAdmin/inner_row_media.html.twig</argument>
<argument key="outer_list_rows_mosaic">@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig</argument>
<argument key="base_list_field">@SonataAdmin/CRUD/base_list_flat_field.html.twig</argument>
<argument key="list">@SonataMedia/MediaAdmin/list.html.twig</argument>
<argument key="edit">@SonataMedia/MediaAdmin/edit.html.twig</argument>
</argument>
</call>
</service>
將此服務導入config.yml
imports:
- { resource: "@ApplicationSonataMediaBundle/Resources/config/service.xml" }
你的管理員課程
namespace Application\Sonata\MediaBundle\Admin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\DoctrineORMAdminBundle\Filter\ChoiceFilter;
use Sonata\MediaBundle\Admin\ORM\MediaAdmin as MediaBaseAdmin;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
class MediaAdmin extends MediaBaseAdmin
{
...
/**
* {@inheritdoc}
*/
public function configureListFields(ListMapper $listMapper)
{
// parent::configureListFields($listMapper);
}
/**
* {@inheritdoc}
*/
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
//
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.