Sylius:Catchable致命错误:参数1传递给AppBundle \ Controller \ ProductController :: __ construct()

时间:2016-10-31 17:24:24

标签: sylius

我试图覆盖ProductController,我已经关注了这个文档: http://docs.sylius.org/en/stable/bundles/general/overriding_controllers.html  但一个例外不断出现:

捕获致命错误:传递给Sylius \ Bundle \ ResourceBundle \ Controller \ ResourceController :: __ construct()的参数1必须实现接口Sylius \ Component \ Resource \ Metadata \ MetadataInterface,没有给出,在C:\ wamp3 \ www \中调用第1382行的sidratsoft_website \ app \ cache \ dev \ appDevDebugProjectContainer.php并定义了

的appbundle /控制器/ ProductController.php:

    <?php
namespace AppBundle\Controller;

use FOS\RestBundle\View\View;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sylius\Component\Resource\Metadata\MetadataInterface;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Sylius\Component\Resource\ResourceActions;


class ProductController extends ResourceController
{


public function allProdSpecificTaxonAction(Request $request,$t){

    $locale = $this->get('sylius.context.locale')->getLocale();
    /** @var Taxon $taxon */
    $taxon = $this->get('sylius.repository.taxon')
    ->findByName('Honeywell',$locale);
    var_dump($taxon);
    exit;
}
}
?>

应用/配置/ routing.yml中:

app_bundle_product:
path: /products/cat/{taxon}
defaults:
    _controller: AppBundle:Product:allProdSpecificTaxonAction

应用/配置/ config.yml:

sylius_product:
resources:
    product:
        classes:
            controller: AppBundle\Controller\ProductController

2 个答案:

答案 0 :(得分:0)

我想你不必在AppBundle/Resoures/config/services.yml注册控制器作为服务。当你扩展ResourceController(这是完全正确的)时,它必须注入许多依赖 - 幸运的是,你不必自己注入它们,因为 Sylius 将完成这项工作,自动注册带有依赖注入的控制器。

答案 1 :(得分:0)

我知道我修复了它,问题出在路由中的_controller属性中: 从这个:

app_bundle_product:
path: /products/cat/{taxon}
defaults:
    _controller: AppBundle:Product:allProdSpecificTaxonAction

为:

app_bundle_product:
    path: /products/cat/{taxon}
    defaults:
        _controller: sylius.controller.product:allProdSpecificTaxonAction