대시 보드 소나타 관리에 표시되는 사용자 정의 요소는 소나타 블록 번들을 사용합니다. 사용자 정의 링크 또는 버튼을 추가하려면 소나타 블록 번들을 사용하여 새 블록을 만들어야합니다. Admin Bundle의 핵심 템플릿 (dashboard.html.twig)은 실행되도록 구성된 블록을 반복합니다 (응용 프로그램의 config.yml에서). 여전히 Admin Bundle은 template_admin_list.html.twig 템플릿의 모든 엔티티 블록을 반복합니다. 사용자 정의 블록 템플릿 만들기 여기에서 사용자 지정 그룹 (섹션) 및 단추를 래핑하여 엔터티 그룹과 동일한 느낌을 갖도록 레이아웃을 가져올 수 있습니다.
오케이, 소개였습니다.
예를 들어 맞춤 뉴스 레터 섹션을 만들고 싶습니다.
- 이 (읽기 및 심포니 2 라이브러리에 서비스가 무엇인지 이해)
- 추가 새 블록 템플릿을
- 만들 블록 서비스를 만들 BlockBundleInterface
- 를 구현하는 새로운 블록 클래스를 만들 :
는 단계가있다 Sonata Block 번들 구성에 새로 생성 된 서비스
- 새로 만든 서비스를 Sonata Admin 번들 구성에 추가
- 대시 보드를 입력하고 - 물건 - 당신 - 넣어 무엇이든 -에 - 네 - 블록 템플릿 :
AD1) 새 그룹/버튼/링크를/즐길 새로운 블록 클래스를
일반 명령 만들기 아래 : 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);
}
}
내가 소나타 미디어 번들 코드 파일을 읽는 몇 줄을 추가했다.
Ad2를) 는 새로운 블록 템플릿을 내가 소나타 관리 번들의 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
합니다. 복잡한 것처럼 보이지만 근실하지는 않습니다. 큰 필요없이 전체 템플릿을 무시하지 않고도 대시 보드 페이지를 수정하는 것이 중요합니다. 그 녀석은 Admin Bundle의 소스 코드를 읽은 것을 배웠다 :) 하루 종일
내가 이것을 사용하고 http://stackoverflow.com/questions/11725476/add-custom-button-to-edit-page -of-sonata-admin-bundle? rq = 1을 사용하고 템플릿을 app/Resources/ /views/Block/block_admin_list.html.twig와이 링크의 정보에 복사하여 번들 템플릿의 사용자 정의를 사용했습니다 http : // sonata- project.org/bundles/admin/master/doc/reference/templates.html 유용하다고 판명되었습니다 –
dagger