バージョン選択

フォーラム

メニュー

オンライン状況

62 人のユーザが現在オンラインです。 (50 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 62
もっと...

サイト内検索

質問 > その他 > マスタデータ表示

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
r_yamada
投稿日時: 2024/9/6 15:38
対応状況: −−−
半人前
登録日: 2024/9/2
居住地:
投稿: 21
マスタデータ表示
▼テンプレート
[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
居住地: 愛媛県
投稿: 1752
Re: マスタデータ表示
getExtendedTypes を追加してください。



    /**
     * {@inheritdoc}
     */
    public static function getExtendedTypes(): iterable
    {
        yield MasterdataType::class;
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

r_yamada
投稿日時: 2024/9/6 16:22
対応状況: 解決済
半人前
登録日: 2024/9/2
居住地:
投稿: 21
Re: マスタデータ表示
h_tanaka 様
staticとiterable、yieldが必要だったんですね。
ありがとうございます。こちら解決しました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は93,309名です
総投稿数は111,006件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1841
7
h_tanaka
1752
8
red
1574
9
mcontact
1462
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.