2015-05-27 65 views
3

也許這個問題太容易回答,但我搜索了奏鳴曲管理軟件包的文檔,但是我沒有找到需要的東西。 當您導航到奏鳴曲管理軟件包中的模型列表視圖時,您會在右上角找到動作按鈕,並在其下找到添加新動作。 在我來說,我需要的是要在這個截屏直接顯示在添加新的動作在照片喜歡: enter image description here在奏鳴曲列表視圖中添加新按鈕管理軟件包

任何一個可以幫助我嗎?

+0

在奏鳴曲模板中搜索包含該按鈕的程序段並覆蓋它。 –

回答

5

我知道這是一個老問題,但我會留下這個答案供將來參考。我不得不做類似的事情,這是我做到的。

在您的管理類覆蓋configureActionButtons()方法

class YourAdmin extends AbstractAdmin 
{ 
    //... 
    /** 
    * Overriden from (AbstractAdmin) 
    */ 
    public function configureActionButtons($action, $object = null) 
    { 
     $list = parent::configureActionButtons($action,$object); 

     $list['custom_action'] = array(
       'template' => 'AcmeBundle:YourAdmin:custom_button.html.twig', 
     ); 

     return $list; 
    } 
    //... 

} 

,然後創建你的AcmeBundle /資源鍵/視圖/ YourAdmin/custom_button.html.twig

{# custom_button.html.twig #}  
<a class="sonata-action-element" href="{{ admin.generateUrl('your_route') }}"> 
    <i class="fa fa-plus-circle"></i>Custom Action 
</a> 

當然你可以添加權限檢查後(爲清晰起見,它們被省略)

希望它有助於某人

+2

它有幫助;-)謝謝你 –

+1

Tt絕對有幫助。感謝:-) –

+0

這幫了我,謝謝 –

0

你是哪個奏鳴曲版本?你的例子的版本是什麼?

Mine是2.3,看起來不像你可以在參數上玩那樣,但是你可以覆蓋佈局讓它只出現創建按鈕。

如果您需要所有管理員,最好從配置覆蓋佈局。如果您只需要列表,或顯示或刪除,則僅覆蓋這些模板。在config.yml :

sonata_admin: 
    templates: 
     layout: AppBundle:Layouts:standard_layout_override.html.twig 
     show:  AppBundle:Layouts:show.html.twig 
     list:  AppBundle:Layouts:list.html.twig 
     delete: AppBundle:Layouts:delete.html.twig 
     edit:  AppBundle:Layouts:edit.html.twig 

在該文件覆蓋該塊:

{% block sonata_page_content_header %} 
    {% block sonata_page_content_nav %} 
     {% if _tab_menu is not empty or _actions is not empty %} 
      <nav class="navbar navbar-default" role="navigation"> 
       {% block tab_menu_navbar_header %} 
        {% if _navbar_title is not empty %} 
         <div class="navbar-header"> 
          <span class="navbar-brand">{{ _navbar_title|raw }}</span> 
         </div> 
        {% endif %} 
       {% endblock %} 
       <div class="container-fluid"> 
        <div class="navbar-left"> 
         {% if _tab_menu is not empty %} 
          {{ _tab_menu|raw }} 
         {% endif %} 
        </div> 

        {% if _actions|replace({ '<li>': '', '</li>': '' })|trim is not empty %} 
         <ul class="nav navbar-nav navbar-right"> 
          <li class="dropdown sonata-actions"> 
           <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ 'link_actions'|trans({}, 'SonataAdminBundle') }} <b class="caret"></b></a> 
           <ul class="dropdown-menu" role="menu"> 
            {{ _actions|raw }} 
           </ul> 
          </li> 
         </ul> 
        {% endif %} 
       </div> 
      </nav> 
     {% endif %} 
    {% endblock sonata_page_content_nav %} 
{% endblock sonata_page_content_header %} 

你也應該能夠做到這一點對某些管理員只覆蓋定義的服務定義那些管理員特定的模板這樣的:

app.admin.product: 
     class: AppBundle\Admin\ProductAdmin 
     arguments: [~, AppBundle\Entity\Product, AppBundle:Admin\Product] 
     tags: 
      - {name: sonata.admin, manager_type: orm, group: Products, label: Products} 
     calls: 
      - [ setTemplate, [edit, AppBundle:Product:edit.html.twig]] 

但我不能得到那個「的appbundle:產品:edit.html.twig」模板清單中刪除的動作重寫相同的塊。

希望這可以幫助你。

+0

不,Sonata食譜說你不能爲特定的管理員使用配置,對於全球來說是正確的。對於特定情況,您必須重寫getTheme()方法,或者重寫控制器中的整個操作並使用另一個模板來呈現視圖。 – Ninj

0

在SonataAdmin ~3中,您可以直接在YourEntityAdmin::configureListFields()方法中配置顯示模板的模板。

爲此you first

任何地方創建新的模板,延長奏鳴曲佈局和使用sonata_admin_content塊。

「Anywhere」的意思是「任何地方」:這讓我有點困惑。

基本上,你在Resources\CRUD\list__action_your_action.html.twig創建例如模板,然後從配置調用它在YourEntityAdmin::configureListFields()

class YourEntityAdmin 
{ 
    protected function configureListFields(ListMapper $listMapper) 
    { 
     $listMapper 

      // other fields... 

      ->add('_action', null, array(
       'actions' => array(

        // ... 

        'clone' => array(
         'template' => 'AppBundle:CRUD:list__your_action.html.twig' 
        ) 
       ) 
      )) 
     ; 
    } 
} 

記得寫的東西在此模板中,也是一個簡單的字符串如

{# Resources\CRUD\list__action_your_action.html.twig #} 
your action button template 

「您的動作按鈕模板」將在「動作」列中呈現,基本上就是您按鈕的標籤:使用模板您可以隨意操作它。 這真的很難理解,因爲在我的專欄中沒有任何操作,因爲我將模板留空,所以沒有渲染任何東西!

無論如何,您可以在關於CREATING A CUSTOM ADMIN ACTION的文檔中找到添加新按鈕(以及相關路徑/操作)的完整過程。

相關問題