バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > 開発について > 自作プラグインを有効化すると「名前は既に使用されているため、クラス を宣言できませんとエラーが出る」

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yu86
投稿日時: 2024/4/4 17:14
対応状況: −−−
半人前
登録日: 2024/3/28
居住地:
投稿: 13
自作プラグインを有効化すると「名前は既に使用されているため、クラス を宣言できませんとエラーが出る」
▼テンプレート
[EC-CUBE] 4.2.0 さくらサーバーのクイックインストール
[レンタルサーバ] さくらのレンタルサーバー
[OS] Windows11
[PHP] 8.3.2
[データベース] DB名:masatomiplan_management、MySQL5.7
[WEBサーバ] WEBサーバ名:/home/masatomiplan/www
[ブラウザ] GoogleCrome123.0.6312.59
[導入プラグインの有無] なし(初期プラグインも削除済み)
[カスタマイズの有無] 管理項目からindex.twigを修正
            商品詳細の商品情報を修正
            問い合わせフォームの修正
            sodiumをインストール
[現象]下記サイトを参考にプラグインをインストール
https://umebius.com/eccube/v4-plugin-order_list_filter_shipping_date/

下記サイトの通りにコードをアップロード
https://jum11.com/2020/10/11/ec-cube4-product-search-customize/

SearchProductTypeExtension.phpでエラーが発生したので追記(コードの全文は後で添付いたします)

「コンパイル エラー: 名前は既に使用されているため、クラス Plugin\ProductSearchCustomize\Form\Extension\Admin\SearchProductExtension を宣言できません」とエラーが出る(今ここ)

私の方でも関数名を「SearchProductTypeShippingDateExtension」に変えるなどの対応を行いましたが、
また別のエラー(Expected to find class "Customize\Form\Type\Extension\SearchProductTypeExtension" in file "/home/masatomiplan/www/Management/app/Customize/Form/Type/Extension/SearchProductTypeExtension.php" while importing services from resource "../../../app/Customize/*", but it was not found! Check the namespace prefix used with the resource in /home/masatomiplan/www/Management/app/config/eccube/services.yaml (which is loaded in resource "/home/masatomiplan/www/Management/app/config/eccube/services.yaml").)が発生するだけでした。

正直私の手には負えないので皆様のお力添えをいただきたいです。
お忙しいところ恐れ入りますが何卒ご協力をお願いいたします。

エラーが発生しているコード全文
<?php

namespace Plugin\ProductSearchCustomize\Form\Extension\Admin;

use Eccube\Form\Type\PriceType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Eccube\Form\Type\Admin\SearchProductType;

class SearchProductExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('lower_price', PriceType::class, [
'required' => false,
])->add('upper_price', PriceType::class, [
'required' => false,
]);
}

/**
* {@inheritdoc}
*
* @return string
*/

public function getExtendedType()
{
return SearchOrderType::class;
}

public static function getExtendedTypes(): iterable
{
return [SearchProductType::class];
}
}
tattsu
投稿日時: 2024/4/4 17:21
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: 自作プラグインを有効化すると「名前は既に使用されているため、クラス を宣言できませんとエラーが出る」
エラーの原因は
SearchProductTypeExtensionのファイル名とクラス名が一致していないためです。

あとnamespaceもおかしいです。

ファイルがapp/Customize/Form/Type/Extension/SearchProductTypeExtension.phpであれば

namespace → namspace Customize\Form\Type\Extension;
クラス名 → SearchProductTypeExtension
にしてください。


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

yu86
投稿日時: 2024/4/4 18:00
対応状況: −−−
半人前
登録日: 2024/3/28
居住地:
投稿: 13
Re: 自作プラグインを有効化すると「名前は既に使用されているため、クラス を宣言できませんとエラーが出る」
ご回答ありがとうございます。
回答の通りに修正すると新しいエラーが発生しました。

エラー本文
サービス「Plugin\ProductSearchCustomize\Repository\ConfigRepository」をオートワイヤできません: メソッド「__construct()」の引数「$registry」のタイプは「Symfony\Bridge\Doctrine\RegistryInterface」ですが、このクラスが見つかりませんでした。

use Plugin\ProductSearchCustomize\Repository\ConfigRepositoryの修正をしてみましたが、直らなかったのでusenameを触らずに修正する方法が全く思いつきません

ですので引き続き皆様のお力添えをいただきたいです。
何卒よろしくお願い申し上げます。

コード全文

ファイル名:SearchProductTypeExtension.php

<?php

namespace Customize\Form\Type\Extension;

use Eccube\Form\Type\PriceType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Eccube\Form\Type\Admin\SearchProductType;
use Plugin\ProductSearchCustomize\Repository\ConfigRepository;

class SearchProductTypeExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('lower_price', PriceType::class, [
'required' => false,
])->add('upper_price', PriceType::class, [
'required' => false,
]);
}

/**
* {@inheritdoc}
*
* @return string
*/

public function getExtendedType()
{
return SearchOrderType::class;
}

public static function getExtendedTypes(): iterable
{
return [SearchProductType::class];
}
}
tattsu
投稿日時: 2024/4/4 18:14
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: 自作プラグインを有効化すると「名前は既に使用されているため、クラス を宣言できませんとエラーが出る」
プラグインの設定要らないですよね?

追加したコードからConfigやConfigRepositoryに関する記述を消せばいいかと思います。


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

yu86
投稿日時: 2024/4/5 9:16
対応状況: −−−
半人前
登録日: 2024/3/28
居住地:
投稿: 13
自作プラグインを有効化するとPlugin\ProductSearchCustomize(プラグイン名)\Repository\ConfigRepository」をオートワイヤできませんとエラーが出る
ご回答ありがとうございます。
ConfigRepositoryを消してみましたが改善しませんでした。

他のConfigに関する記載は見つからなかったので、他にも修正する箇所等ありましたら、その個所のコードを記載してくださると助かります。

申し訳ございませんが、引き続きご協力をお願いいたします。

■エラー本文
サービス「Plugin\ProductSearchCustomize\Repository\ConfigRepository」をオートワイヤできません: メソッド「__construct()」の引数「$registry」のタイプは「Symfony\Bridge\Doctrine\RegistryInterface」ですが、このクラスが見つかりませんでした。

■コード全文
<?php

namespace Customize\Form\Type\Extension;

use Eccube\Form\Type\PriceType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Eccube\Form\Type\Admin\SearchProductType;

class SearchProductTypeExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('lower_price', PriceType::class, [
'required' => false,
])->add('upper_price', PriceType::class, [
'required' => false,
]);
}

/**
* {@inheritdoc}
*
* @return string
*/

public function getExtendedType()
{
return SearchOrderType::class;
}

public static function getExtendedTypes(): iterable
{
return [SearchProductType::class];
}
}
tattsu
投稿日時: 2024/4/5 9:34
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: 自作プラグインを有効化するとPlugin\ProductSearchCustomize(プラグイン名)\Repository\ConfigRepository」をオートワイヤできませんとエラーが出る
ConfigRepositoryのファイルを削除したりConfigに関する記述を消したらキャッシュ削除してみてください。


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

yu86
投稿日時: 2024/4/5 9:51
対応状況: −−−
半人前
登録日: 2024/3/28
居住地:
投稿: 13
Re: 自作プラグインを有効化するとPlugin\ProductSearchCustomize(プラグイン名)\Repository\ConfigRepository」をオートワイヤできませんとエラーが出る
キャッシュを削除(サーバーのcacheフォルダを削除)しましたが、何も変わらず同じエラーが発生しました。
他に何か改善策などございますでしょうか。

エラー本文とコードは前回の投稿から変化していないため省略いたします。
tattsu
投稿日時: 2024/4/5 9:58
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: 自作プラグインを有効化するとPlugin\ProductSearchCustomize(プラグイン名)\Repository\ConfigRepository」をオートワイヤできませんとエラーが出る
現在カスタマイズで追加されているファイル名と内容をそれぞれ書いていただけますか?


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

yu86
投稿日時: 2024/4/5 10:36
対応状況: −−−
半人前
登録日: 2024/3/28
居住地:
投稿: 13
Re: 自作プラグインを有効化するとPlugin\ProductSearchCustomize(プラグイン名)\Repository\ConfigRepository」をオートワイヤできませんとエラーが出る
ssh(WindowsPowerShell)にてphp bin/console eccube:plugin:generateを実行し

name:ProductSearchCustomize
code:ProductSearchCustomize
ver:1.0.0

でプラグインを作成

その後は下のサイト通りに修正しました。
https://jum11.com/2020/10/11/ec-cube4-product-search-customize/

今回の実装については以上です。
サイト内で気になる個所や気になるコード等ありましたら、お気軽にお申し付けください。
tattsu
投稿日時: 2024/4/5 12:19
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: 自作プラグインを有効化するとPlugin\ProductSearchCustomize(プラグイン名)\Repository\ConfigRepository」をオートワイヤできませんとエラーが出る
ConfigRepository.phpやConfig.phpが要りませんよ。
消してみてください。


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は95,982名です
総投稿数は111,643件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
yuh
1893
7
h_tanaka
1850
8
red
1574
9
mcontact
1536
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.