gpt4 book ai didi

php - 在 Sonata Admin Bundle 中注入(inject)容器服务的正确方法

转载 作者:行者123 更新时间:2023-12-05 09:22:40 25 4
gpt4 key购买 nike

我试图在我的 Sonata Admin 类中注入(inject) service container,以便在 configureFormFields 方法中使用它。这是我的:

config.yml(奏鸣曲服务定义)

services:
tan.product.admin.product:
class: Tan\ProductBundle\Admin\ProductAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: Product, label: Product }
arguments: [ null, Tan\ProductBundle\Entity\Product, @service_container]

ProductAdmin.php

class ProductAdmin extends Admin
{

/** @var \Symfony\Component\DependencyInjection\ContainerInterface */
private $container;
public $supportsPreviewMode = true;

/**
* @param string $code
* @param string $class
* @param string $baseControllerName
*/
public function __construct($code, $class, $baseControllerName, $container = null)
{
parent::__construct($code, $class, $baseControllerName);
$this->container = $container;
}

// other methods

protected function configureFormFields(FormMapper $form)
{

$helper = $this->container->get('oneup_uploader.templating.uploader_helper');
$endpoint = $helper->endpoint('products');

$form
->add('product_name', null, array('label' => 'Nombre'))
->add('product_description', null, array('label' => 'Descripción'));
}

}

但是我收到了这个错误:

ContextErrorException: Catchable Fatal Error: Object of class appDevDebugProjectContainer could not be converted to string in /var/www/html/tan/var/cache/dev/classes.php line 12979

这是怎么回事?

最佳答案

由于您的构造函数有 4 个参数,其中第 4 个参数是服务容器,因此您需要传入第 4 个服务容器:

services:
tan.product.admin.product:
class: Tan\ProductBundle\Admin\ProductAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: Product, label: Product }
arguments: [ null, Tan\ProductBundle\Entity\Product, null, @service_container]

关于php - 在 Sonata Admin Bundle 中注入(inject)容器服务的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com