到在dashbord中顯示自定義元素Sonata Admin使用Sonata Block Bundle。 要添加自定義鏈接或按鈕,您需要使用Sonata Block Bundle創建新塊。 Admin Bundle的核心模板(dashboard.html.twig)迭代配置爲運行的塊(在應用程序的config.yml中)。 儘管如此,Admin Bundle會迭代模板block_admin_list.html.twig中的所有實體塊。創建您的自定義模板模板,您可以從這裏獲取佈局來包裝自定義組(部分)和按鈕,以便它們與實體組具有相同的感覺。
好的,這是介紹。
例如,我們想製作自定義的新聞部分。
有步驟:
- 創建實現BlockBundleInterface
- 創造新的塊模板
- 創建塊服務新的塊級(閱讀和了解什麼是服務的Symfony 2庫)
- 加Sonata Block Bundle配置新創建的服務
- 將新創建的服務添加到Sonata Admin Bundle配置
- 進入儀表板和享受新的組/按鍵/鏈接/不管-的東西 - 你 - 放 - 在你的塊模板:)
廣告1)創建新的塊級
一般注意事項下:http://sonata-project.org/bundles/block/master/doc/reference/your_first_block.html
我的文件是這樣的:
<?php
namespace InstitutoStorico\Bundle\NewsletterBundle\Block;
use Symfony\Component\HttpFoundation\Response;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\BlockBundle\Model\BlockInterface;
use Sonata\BlockBundle\Block\BaseBlockService;
class NewsletterBlockService extends BaseBlockService
{
public function getName()
{
return 'My Newsletter';
}
public function getDefaultSettings()
{
return array();
}
public function validateBlock(ErrorElement $errorElement, BlockInterface $block)
{
}
public function buildEditForm(FormMapper $formMapper, BlockInterface $block)
{
}
public function execute(BlockInterface $block, Response $response = null)
{
// merge settings
$settings = array_merge($this->getDefaultSettings(), $block->getSettings());
return $this->renderResponse('InstitutoStoricoNewsletterBundle:Block:block_my_newsletter.html.twig', array(
'block' => $block,
'settings' => $settings
), $response);
}
}
我加了一些線讀取索納塔媒體捆綁代碼文件。
廣告2)創建新的塊模板
佈局我從索納塔管理員束block_admin_list.html.twig了。
我的文件是這樣的:
{% extends 'SonataBlockBundle:Block:block_base.html.twig' %}
{% block block %}
<table class="table table-bordered table-striped sonata-ba-list">
<thead>
<tr>
<th colspan="3">Newsletter - inviare</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="btn-group" align="center">
<a class="btn btn-small" href="#">Servizio Newsletter</a>
</div>
</td>
</tr>
</tbody>
</table>
{% endblock %}
Ad3的)創建塊服務
在你的包有就是你申報服務(services.yml或admin.yml)的文件。隨你。但重要的是,它在「imports」部分插入到應用程序的config.yml中。
我的服務宣言是這樣的:
sonata.block.service.newsletter:
class: InstitutoStorico\Bundle\NewsletterBundle\Block\NewsletterBlockService
arguments: [ "sonata.block.service.newsletter", @templating ]
tags:
- { name: sonata.block }
AD4)添加新創建的服務來索納塔組羣配置
此配置是把你的應用程序的config.yml。
我的配置是這樣的:
#Sonata Block Bundle
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.block.service.text: ~
sonata.block.service.action: ~
sonata.block.service.rss: ~
sonata.block.service.newsletter: ~
的Ad5)添加新創建的服務來索納塔管理員束配置
此配置是把你的應用程序的config.yml。
我的配置是這樣的:
# Sonata Admin Generator
sonata_admin:
...
dashboard:
blocks:
# display a dashboard block
- { position: left, type: sonata.admin.block.admin_list }
- { position: left, type: sonata.block.service.newsletter}
AD6)輸入儀表盤和享受
我的控制面板看起來是這樣的:
http://img805.imageshack.us/img805/2789/immaginezuq.png
這就是全部。看起來很複雜,但要真誠,這不是那麼重要。重要的是它是一種乾淨的方式來修改儀表板頁面,而不必在沒有需要的情況下重寫整個模板。 所有那些Il學會了閱讀Admin Bundle的源代碼:)全天
我已經使用這個http://stackoverflow.com/questions/11725476/add-custom-button-to-edit-page通過將模板複製到app/Resources/ /views/Block/block_admin_list.html.twig加上此鏈接的信息http:// sonata-of-sonata-admin-bundle?rq = 1, project.org/bundles/admin/master/doc/reference/templates.html被證明是有用的 –
dagger