将块添加到Sonata管理界面中

时间:2016-02-08 16:38:13

标签: symfony sonata-admin

我正在尝试使用sonataadminbundle将一个块添加到我的管理仪表板中。我试着遵循第一个答案中写的指令:How to add custom link or button to SonataAdminBundle Dashboard in Symfony2

但我的BlockService类有问题。

代码如下:

namespace AppBundle\Block;

use Symfony\Component\HttpFoundation\Response;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\CoreBundle\Validator\ErrorElement;
use Sonata\BlockBundle\Model\BlockInterface;
use Sonata\BlockBundle\Block\BaseBlockService;

class InvitationBlockService extends BaseBlockService
{
    public function getName()
    {
        return 'Invitation manager';
    }

    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_invitation.html.twig', array(
        'block'     => $block,
        'settings'  => $settings
    ), $response);
}

}

但是我在validatBlock,buildEdittForm和execute方法上有一个编译错误:

  

声明必须与BlockServiceInterface-> validateBlock兼容(errorElement:\ Sonata \ AdminBundle> \ Validator \ ErrorElement,block:\ Sonata \ BlockBundle \ Model \ BlockInterface)   类层次结构检查:抽象方法实现,实现/重写方法与超级声明兼容。所有违规都会导致PHP致命错误。不建议禁用或禁止此检查。

你有什么想法吗?

感谢您的阅读。

1 个答案:

答案 0 :(得分:-1)

我终于找到了问题的原因:我不得不自我更新作曲家。

看起来我的作曲家已经老了,并没有获取我需要的所有文件或依赖。

所以,composer self-update救了我。