プラグイン > 開発について > 自作プラグインを有効化すると「名前は既に使用されているため、クラス を宣言できませんとエラーが出る」 |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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 にしてください。
|
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に関する記述を消せばいいかと思います。
|
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に関する記述を消したらキャッシュ削除してみてください。
|
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」をオートワイヤできませんとエラーが出る 現在カスタマイズで追加されているファイル名と内容をそれぞれ書いていただけますか?
|
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が要りませんよ。
消してみてください。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |