2016-05-26 6 views
0

が発生し、私はこのソリューションhttps://stackoverflow.com/a/15167450/2910183、およびエラーを参照してください行われます。私のapp/config/config.ymlソナタ管理バンドルに新しいブロックを作成すると、エラー

sonata_block: 
    default_contexts: [cms] 
    blocks: 
     # enable the SonataAdminBundle block 
     sonata.admin.block.admin_list: 
      contexts: [admin] 
     sonata.user.block.menu: ~ # used to display the menu in profile pages 
     sonata.user.block.account: ~ # used to display menu option (login option) 
     sonata.block.service.text: ~ 
     sonata.block.service.rss: ~ 
     sonata.block.service.newsletter: ~ 

sonata_admin: 
    dashboard: 
     blocks: 
      - 
       position: left 
       type: sonata.admin.block.admin_list 
       settings: 
        groups: [default, app.admin.group.content] 
      - 
       position: right 
       type: sonata.admin.block.admin_list 
       settings: 
        groups: [default] 
      - { position: left, type: sonata.block.service.newsletter} 

Compile Error: Declaration of AppBundle\Block\NewsletterBlockService::execute() must be compatible with Sonata\BlockBundle\Block\BlockServiceInterface::execute(Sonata\BlockBundle\Block\BlockContextInterface $blockContext, Symfony\Component\HttpFoundation\Response $response = NULL)

コード

パート私の一部/private/var/www/learning_sonata/app/config/services.yml

sonata.block.service.newsletter: 
     class: AppBundle\Block\NewsletterBlockService 
     arguments: [ "sonata.block.service.newsletter", @templating ] 
     tags: 
      - { name: sonata.block } 

マイ/private/var/www/learning_sonata/src/AppBundle/Block/NewsletterBlockService.php

namespace AppBundle\Block; 

use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

use Sonata\BlockBundle\Model\BlockInterface; 
use Sonata\BlockBundle\Block\BlockContextInterface; 
use Sonata\BlockBundle\Block\BlockContext; 

use Sonata\BlockBundle\Block\BlockServiceInterface; 

use Sonata\AdminBundle\Form\FormMapper; 
use Sonata\CoreBundle\Validator\ErrorElement; 
use Sonata\BlockBundle\Block\BaseBlockService; 


//use Sonata\BlockBundle\Block; 

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); 
    } 
} 

ありがとうdevilcius!

私は上記のエラーをクリアし、あなたの答えを参照してくださいが、新しいERROが発生:

Method "id" for object "Sonata\BlockBundle\Block\BlockContext" does not exist in SonataBlockBundle:Block:block_base.html.twig at line 11

をファイルパスvendor/sonata-project/block-bundle/Resources/views/Block/block_base.html.twig

<div id="cms-block-{{ block.id }}" class="cms-block cms-block-element"> 
    {% block block %}EMPTY CONTENT{% endblock %} 
</div> 

ソナタバージョン

sonata-project/admin-bundle    3.1.0 The missing Symfony Admin ... 
sonata-project/block-bundle    3.0.0 Symfony SonataBlockBundle 
sonata-project/cache      1.0.7 Cache library 
sonata-project/core-bundle    3.0.0 Symfony SonataCoreBundle 
sonata-project/doctrine-orm-admin-bundle 3.0.1 Symfony Sonata/Integrate... 
sonata-project/exporter     1.4.1 Lightweight Exporter library 

私はこれをresourceと読んで、それはプロのバージョンだと言った。

いくつかのアイデアを教えてください。

答えて

0

BaseBlockServiceを拡張するときにメソッドシグネチャを実装していません。

use Sonata\BlockBundle\Block\BlockContextInterface; 

public function execute(BlockContextInterface $blockContext, Response $response = null) 
{  
    return $this->renderResponse('InstitutoStoricoNewsletterBundle:Block:block_my_newsletter.html.twig', array(
     'block'  => $blockContext->getBlock(), 
     'settings' => $blockContext->getSettings() 
    ), $response); 
} 
+0

大変ですが、エラーが発生しました。上記の質問を更新しました。 @devilcius – liam

+0

あなたが使用しているソナタのバージョン*( 'composer show | grep sonata')? – devilcius

+0

私は自分のプロを更新しました。 @dev – liam

関連する問題