Aib\PlatformBundle\Entity\User.phpにエンティティクラスがありました
フォームクラスを作成しようとしても問題ありませんでした
php app/console doctrine:generate:form AibPlatformBundle:User
名前空間をAib\PlatformBundle\Entity\Identity\Userに変更しましたが、タスクを使用してフォームを生成しようとすると、それが言う前に言った:
「クラスAib\PlatformBundle\Entity\Userは有効なエンティティまたはマップされたスーパークラスではありません。」
これはファイルの内容です:
<?php
namespace Aib\PlatformBundle\Entity\Identity;
use Doctrine\ORM\Mapping as ORM;
/**
* Aib\PlatformBundle\Entity\Identity\User
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Aib\PlatformBundle\Entity\Identity
\UserRepository")
*/
class User
{
...
何か案が?
symfony2.0.4
この問題があった-注釈を忘れないでください* @ORM\Entity
以下のように:
/**
* Powma\ServiceBundle\Entity\User
*
* @ORM\Entity
* @ORM\Table(name="users")
*/
昨日この問題があり、このスレッドを見つけました。新しいバンドル(例:MyFooBundle/Entity/User.php)でマッピングを使用してエンティティを作成し、ドキュメントに従ってすべての設定を行いましたが、アプリをロードしようとしたときに上記と同じエラーが発生しました。
最終的に、AppKernelにMyFooBundleをロードしていないことに気付きました。
new My\FooBundle\MyFooBundle()
これをデバッグする優れた方法は、次のコマンドを実行することです。
app/console doctrine:mapping:info
Config.ymlファイルを確認してください。次のようなものが含まれているはずです。
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
Host: %database_Host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
types:
json: Sonata\Doctrine\Types\JsonType
orm:
auto_generate_proxy_classes: %kernel.debug%
# auto_mapping: true
entity_managers:
default:
mappings:
FOSUserBundle: ~
# ApplicationSonataUserBundle: ~
YourUserBundle: ~
SonataUserBundle: ~
独自のバンドルをマッピングリストに追加します。
私の場合、サーバーのキャッシュをeAcceleratorから[〜#〜] apc [〜#〜]に変更することで問題を解決しました。どうやらeAcceleratorは、注釈を壊すファイルからすべてのコメントを取り除きます。
この問題を解決するには、$useSimpleAnnotationReader=false
MetaDataConfiguration
を作成するとき。
false
を2番目のパラメーターとしてDoctrine\ORM\Configuration::newDefaultAnnotationDriver
に渡すことでこれを解決しました。
Googleとソースコードを掘り下げるのに時間がかかりました。
Symfonyのインストールとは関係のない別のディレクトリを指すマッピングを使用していたため、レガシーコードも使用する必要があったため、私の場合は特別なものでした。
レガシーエンティティをリファクタリングしたため、動作しなくなりました。以前は@Annotation
の代わりに@ORM\Annotation
を使用していたため、リファクタリング後にメタデータを読み取ることができませんでした。単純な注釈リーダーを使用しないことにより、すべてが大丈夫なようです。
マーク・フーとモゴマンへの大きなTHX
私はそれがconfig.ymlのどこかにある必要があることを知っていました...そしてそれに対してテストすることができます
app/console doctrine:mapping:info
本当に助けました!
実際、このコマンドは単にエラーで停止します...フィードバックはありませんが、すべてがうまくいくと、すべてのエンティティが一覧表示されます。
バンドルのResources/config/doctrineフォルダーで競合する自動生成されたorm.phpファイルを削除することで、同じ例外を解決しました。ドキュメントによると、「バンドルは1つのメタデータ定義形式のみを受け入れることができます。たとえば、YAMLメタデータ定義と注釈付きPHPエンティティクラス定義)を混在させることはできません。」
PHP 5.3.16(Symfony 2.xは動作しません)。]とにかく http://you.site。 name/config.php ホスティングサーバーで動作しないプロジェクトがあった場合、「config.php」の次の行を削除する必要があります。
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
'127.0.0.1',
'::1',
))) {
header('HTTP/1.0 403 Forbidden');
exit('This script is only accessible from localhost.');
}
幸運を!
私の場合、リファクタリング中は熱心すぎて、doctrine ymlファイルを削除しました!