奏鸣曲座 - 执行节目"声明必须兼容.."

时间:2015-06-15 08:38:32

标签: php symfony sonata

在&#34处执行此错误;执行"方法

Declaration must be compatible with BlockServiceInterface->execute(blockContext : \Sonata\BlockBundle\Block\BlockContextInterface, [response : \Sonata\BlockBundle\Block\Response = null])

my composer.json:

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.6.*",
    "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    "doctrine/dbal": "<2.5",
    "doctrine/doctrine-bundle": "~1.2",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~3.0,>=3.0.12",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "friendsofsymfony/user-bundle": "~1.3",
    "symfony/assetic-bundle": "2.1.*",
    "misd/guzzle-bundle": "^1.1",
    "liip/imagine-bundle": "^1.2",
    "sonata-project/admin-bundle": "2.3.3",
    "sonata-project/doctrine-orm-admin-bundle": "2.3.2"

我的班级,这个&#34;执行&#34;放置方法并获取错误:

<?php

namespace Socca\UserBundle\SonataController;

use Socca\UserBundle\Form\Type\UploadingFormType;
use Symfony\Component\HttpFoundation\Response;
use Sonata\BlockBundle\Block\BlockContextInterface;
use Sonata\BlockBundle\Block\BaseBlockService;
use Symfony\Component\OptionsResolver\OptionsResolver;

class UploadingService extends BaseBlockService
{
    private $formFactory;

    public function getName()
    {
       return 'uploading';
    }

    public function execute(BlockContextInterface $blockContext, Response $response = null)
    {
        $block = $blockContext->getBlock();
        $form = $this->getFormFactory()->createBuilder(new UploadingFormType(), null)
            ->getForm();

        if (!$block->getEnabled()) {
            return new Response();
        }

        $settings = $blockContext->getSettings();
        $resolver = new OptionsResolver();
        $resolver->setDefaults($settings);
        $settings = $resolver->resolve($block->getSettings());

        return $this->renderResponse('SoccaUserBundle:Block:uploading.html.twig', array(
            'block'     => $blockContext->getBlock(),
            'settings'  => $settings,
            'form' => $form->createView()
        ), $response);
    }

    /**
     * @return mixed
     */
    public function getFormFactory()
    {
        return $this->formFactory;
    }

    /**
     * @param mixed $formFactory
     */
    public function setFormFactory($formFactory)
    {
        $this->formFactory = $formFactory;
    }
}

如果我检查BaseBlockService namespace Sonata\BlockBundle\Block private void btnRMAdd_Click(object sender, EventArgs e) { //add new row dgItemGroup.Rows.Add(); fnInsertColumnsCombo(); } private void fnInsertColumnsCombo() { DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn(); combo1.Name = "GroupName"; combo1.HeaderText = "GroupName"; string sqlStr = "SELECT GroupID,GroupName FROM tblITEMGROUP "; SqlCommand cmd = new SqlCommand(sqlStr, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); combo1.DataSource = dt; combo1.DisplayMember = "GroupName"; combo1.ValueMember = "GroupID"; combo1.AutoComplete = true; combo1.FlatStyle = FlatStyle.Flat; dgItemGroup.Columns.Insert(0, combo1); dgItemGroup.Columns[0].Width = 250; } ,那就充满了错误&#34;说同样的方法&#34;声明必须兼容...&#34;。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

use Symfony\Component\HttpFoundation\Response替换为use Sonata\BlockBundle\Block\Response