質問 > その他 > マスタデータ表示 |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
r_yamada |
投稿日時: 2024/9/6 15:38
対応状況: −−−
|
半人前 登録日: 2024/9/2 居住地: 投稿: 23 |
マスタデータ表示 ▼テンプレート
[EC-CUBE]4.3、新規インストール [レンタルサーバ]ローカル環境 [OS]windows10 [PHP]8.3.11 [データベース]mysql8.0 [WEBサーバ]DockerDesktop4.33.1(Ubuntu) [ブラウザ]chrome [導入プラグインの有無]なし [カスタマイズの有無]なし [現象] お世話になっております。度々の質問すみません。 マスターデータ管理に新規項目を表示させたいのですが、以下 Customize/Form/Extension/MasterdataTypeExtension.php ファイルを作成後 php bin/console cache:clear --no-warmup コマンドを実行すると以下エラーが発生します。 ・エラー内容 Symfony\Component\ErrorHandler\Error\FatalError^ {#1937 #message: "Error: Class Eccube\Form\Type\Admin\MasterdataTypeExtension contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Form\FormTypeExtensionInterface::getExtendedTypes)" #code: 0 #file: "./app/Customize/Form/Extension/MasterdataTypeExtension.php" #line: 24 -error: array:4 [ "type" => 1 "message" => "Class Eccube\Form\Type\Admin\MasterdataTypeExtension contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Form\FormTypeExtensionInterface::getExtendedTypes)" "file" => "/var/www/html/app/Customize/Form/Extension/MasterdataTypeExtension.php" "line" => 24 ] } こちらエラーを見てMasterdataTypeExtensionにgetExtendedType()のメソッドを作成したのですが、再度キャッシュクリアを行っても同じエラー文が表示されます。 こちら作成はMasterdataTypeから名前を変えて複製し、継承をextends AbstractTypeExtension、getExtendedTypeの追加、useの修正を行い作成したのですが、他に変えるべき箇所があるのでしょうか? 初歩的な質問で大変恐縮ではございますが、ご回答いただけますと幸いです。 CustomizeForm/Extension/MasterdataTypeExtension.php namespace Eccube\Form\Type\Admin; use Doctrine\ORM\EntityManager; use Eccube\Form\Type\Admin\MasterdataType; use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; /** * Class MasterdataType */ class MasterdataTypeExtension extends AbstractTypeExtension { /** * @var EntityManagerInterface */ private $entityManager; /** * MasterdataType constructor. * * @param EntityManagerInterface $entityManager */ public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $masterdata = []; /** @var MappingDriverChain $driverChain */ $driverChain = $this->entityManager->getConfiguration()->getMetadataDriverImpl()->getDriver(); /** @var MappingDriver[] $drivers */ $drivers = $driverChain->getDrivers(); foreach ($drivers as $namespace => $driver) { if ($namespace == 'Eccube\Entity' || $namespace == 'Customize\Entity') { $classNames = $driver->getAllClassNames(); foreach ($classNames as $className) { /** @var ClassMetadata $meta */ $meta = $this->entityManager->getMetadataFactory()->getMetadataFor($className); // OrderStatus/OrderStatusColorは対象外 // @see https://github.com/EC-CUBE/ec-cube/pull/4844 if (in_array($meta->getName(), [OrderStatus::class, OrderStatusColor::class, CustomerOrderStatus::class])) { continue; } if (strpos($meta->rootEntityName, 'Master') !== false && $meta->hasField('id') && $meta->hasField('name') && $meta->hasField('sort_no') ) { $metadataName = str_replace('\\', '-', $meta->getName()); $masterdata[$metadataName] = $meta->getTableName(); } } } } $builder ->add('masterdata', ChoiceType::class, [ 'choices' => array_flip($masterdata), 'expanded' => false, 'multiple' => false, 'constraints' => [ new Assert\NotBlank(), ], ]) ; } /** * {@inheritdoc} */ public function getExtendedType() { return MasterdataType::class; } } |
h_tanaka |
投稿日時: 2024/9/6 15:48
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1790 |
Re: マスタデータ表示 getExtendedTypes を追加してください。
|
r_yamada |
投稿日時: 2024/9/6 16:22
対応状況: 解決済
|
半人前 登録日: 2024/9/2 居住地: 投稿: 23 |
Re: マスタデータ表示 h_tanaka 様
staticとiterable、yieldが必要だったんですね。 ありがとうございます。こちら解決しました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |