我试图覆盖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
答案 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