Saya sedang membangunkan aplikasi Symfony 3. Log profil Symfony memberitahu saya:
依赖于服务自动注册类型"AppEntitySubDirCategory"已自3.4版本起被弃用,并且在4.0版本中将不再支持。 请创建一个名为"AppEntitySubDirCategory"的服务。
Namun, ini hanyalah kacang ORM yang mudah:
/** * @ORMEntity * @ORMTable(name="category") */ class Category { ...
Bagaimana saya harus menyelesaikan masalah ini? Adakah saya benar-benar perlu mengisytiharkan entiti ORM sebagai perkhidmatan dalamservices.yaml
? Jika ya, apakah yang perlu dilakukan?
KEMASKINISebenarnya, entiti saya berada dalam subdirektori. Saya telah mengubah suai soalan saya.
Dalamservice.yaml
saya saya mencuba:
App: resource: '../src/*' exclude: '../src/{Entity,Repository,Tests,Entity/SubDir}'
...Tapi takde kesan.
Adakah anda mempunyai kelas di bawah pendaftaran Perkhidmatan-auto yang menggunakan entiti sebagai parameter pembina?
Di sinilah letak masalah anda.
Anda perlu bertanya kepada diri sendiri sama ada kelas berkaitan ini benar-benar perkhidmatan atau hanya objek biasa yang anda selalu cipta kejadian sendiri.
Jika ia tidak digunakan sebagai perkhidmatan melalui bekas, anda mempunyai dua pilihan:
Anda boleh mengecualikan kelas ini melalui corak global seperti berikut:
Atau anda boleh menetapkan parameter berikut dalam konfigurasi anda:
Dengan pilihan ini, bekas tidak akan cuba mencipta kelas perkhidmatan dengan parameter yang tidak tersedia sebagai perkhidmatan, dan anda akan mendapat ralat yang menentukan. Ini ialah tetapan lalai untuk sf4.
Contoh yang baik yang mencetuskan ralat ini ialah kelas acara tersuai yang mengambil entiti sebagai muatan dalam pembina:
Sekarang, jika fail ini tidak dikecualikan secara khusus, bekas akan cuba mendaftarkannya sebagai perkhidmatan secara automatik. Memandangkan badan pepejal dikecualikan, ia tidak boleh didawai secara automatik. Tetapi dalam 3.4, terdapat mekanisme sandaran ini yang mencetuskan amaran ini. Setelah strict_mode diaktifkan, acara itu tidak tersedia sebagai perkhidmatan dan akan menimbulkan ralat jika anda cuba menggunakannya sebagai perkhidmatan.