私はSyliusのProductType(AbstractResourceTypeを拡張)内のチャネルエンティティにアクセスするために一日中探してきました。AbstractResourceTypeにEntityManagerを挿入するSylius
:具体的には、私はでProductTypeクラスのbuildForm()関数(SRC/Sylius /バンドル/ ProductBundle /フォーム/タイプ/ ProductType.php)内 'US_Web_Store' チャンネルエンティティを取得する必要があることはここに私のコードです
のsrc/Sylius /バンドル/ ProductBundle /フォーム/タイプ/ ProductType.php
namespace Sylius\Bundle\ProductBundle\Form\Type;
use Doctrine\ORM\EntityManagerInterface;
class ProductType extends AbstractResourceType
{
private $variantResolver;
private $em;
public function __construct($dataClass, $validationGroups, ProductVariantResolverInterface $variantResolver, EntityManagerInterface $em) {
parent::__construct($dataClass, $validationGroups);
$this->variantResolver = $variantResolver;
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$product = $builder->getData();
$product->addChannel($this->container->get('sylius.repository.channel')->findOneBy(['code' => 'US_Web_Store']));
[...]
}
}
その後のsrc/Sylius /バンドル/ ProductBundle /リソース/設定/ services.xmlの中:
<service id="product.form.type.product" class="Sylius\Bundle\ProductBundle\Form\Type\ProductType">
<argument type="service" id="doctrine.orm.entity_manager"/>
</service>
そして、私は取得していますエラーは次のとおりです。
タイプのエラー:Sylius \バンドル\ ProductBundle \フォーム\タイプ\でProductType :: __構築物()を実装しなければならないインタフェース教義\ ORM \ EntityManagerInterfaceに渡される引数4、どれも
与えられていません私も経由して、チャネルリポジトリを渡して試してみた:
しかし、同じ問題がありました。コントローラーには何も渡されないので、私はここで何か基本的なものが欠けていると確信しています。
が見えます。あなたは1つしか持っていません。 – craigh
私は他の3つのサービスがどこから来たのか分かりません。私はそれらを探してみました。しかし、私は彼らがデフォルトでどこからでも大丈夫に注射されていると確信しています。私はそれらを追加しませんでした。エラーは4番目の引数にのみ問題があり、それが私が追加したものです。 – carbide20