डैशबॉर्ड सोनाटा एडमिन में कस्टम तत्व प्रदर्शित करें सोनाटा ब्लॉक बंडल का उपयोग करता है। कस्टम लिंक या बटन जोड़ने के लिए आपको सोनाटा ब्लॉक बंडल का उपयोग करके एक नया ब्लॉक बनाने की आवश्यकता है। व्यवस्थापक बंडल का मूल टेम्पलेट (dashboard.html.twig) चलाने के लिए कॉन्फ़िगर किए गए ब्लॉक को पुन: सक्रिय करता है (एप्लिकेशन के config.yml में)। फिर भी, व्यवस्थापक बंडल टेम्पलेट block_admin_list.html.twig में आपके सभी इकाई ब्लॉक को पुन: सक्रिय करता है। अपना कस्टम ब्लॉक टेम्पलेट बनाना यहां से है कि आप अपने कस्टम समूह (सेक्शन) और बटन को लपेटने के लिए लेआउट ले सकते हैं ताकि वे इकाइयों के समूह के समान महसूस कर सकें।
ठीक है, यह परिचय था।
उदाहरण के लिए हम कस्टम न्यूजलेटर अनुभाग बनाना चाहते हैं।
- नए ब्लॉक वर्ग कि BlockBundleInterface
- लागू करता है नया ब्लॉक टेम्पलेट
- बनाने ब्लॉक सेवा बनाने बनाने (पढ़ सकते हैं और Symfony 2 पुस्तकालय में समझने की क्या सेवाएं हैं)
- ऐड:
चरण हैं सोनाटा ब्लॉक बंडल कॉन्फ़िगरेशन के लिए नव निर्मित सेवा
- सोनाटा एडमिन बंडल कॉन्फ़िगरेशन
पर नव निर्मित सेवा जोड़ें
- डैशबोर्ड में प्रवेश करने और नए समूह/बटन/लिंक/जो कुछ-सामान-यू-डाल-इन-अपने-ब्लॉक-टेम्पलेट :)
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) की घोषणा है। जो कुछ। लेकिन यह महत्वपूर्ण है कि यह आपके आयात के 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 में डाल दिया है करने के लिए नव निर्मित सेवा जोड़ें।
मेरे config इस तरह दिखता है:
#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 में डाल दिया है करने के लिए नव निर्मित सेवा जोड़ें।
मेरे config इस तरह दिखता है:
# 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 ने एडमिन बंडल का स्रोत कोड पढ़ना सीखा :) पूरे दिन
मैं इस का इस्तेमाल किया है http://stackoverflow.com/questions/11725476/add-custom-button-to-edit-page -of-sonata-admin-bundle? rq = 1 और टेम्पलेट को ऐप/संसाधन/ /views/Block/block_admin_list.html.twig और इस लिंक की जानकारी http: // sonata- में कॉपी करके बंडल टेम्पलेट्स के अनुकूलन का उपयोग किया। project.org/bundles/admin/master/doc/reference/templates.html उपयोगी साबित हुआ –
dagger