Nette + Doctrine2 špatně funguje anotace
- akadlec
- Člen | 1326
Vytvořil jsem si model v doctrine2 jako MappedSuperclass a začali mi blbnout anotace na presenterech.
Presenter:
/**
* @Secured
* @User(loggedIn)
*/
class DefaultPresenter extends \BasePresenter
{
}
a chyba zachycená laděnkou:
Doctrine\Common\Annotations\AnnotationException
[Semantical Error] The annotation "@Secured" in class Presenters\DefaultPresenter was never imported. Did you maybe forget to add a "use" statement for this annotation?
Zatím nechápu proč to tam padá, anotace jsem normálně v modelech používal, jen když jsem přidal inheritanční entitu tak to začalo blbnout. Konkrétně tato anotace entity:
/**
* @ORM\Entity(repositoryClass="MediaRepository")
* @ORM\Table(name="users_media")
* @ORM\MappedSuperclass
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(type = "string", name = "media_type")
* @ORM\DiscriminatorMap({ "avatars" = "Models\Users\Avatars\Avatar" })
*/
Nemá někdo tip kde hledat řešení?
- frosty22
- Člen | 373
Reader v Doctrine mapuje anotace na objekty, a pokud nenalezne konkrétní objekt, pak vyhodí tu chybu, kterou tam máš.
Předpokládám, že asi nechceš číst anotace presenteru přes Doctrine reader, ale tedy v místě, kde vytváříš instanci readeru musíš mít specifikovaný adresář(e), který má číst a tam nemá být adresář s presentery.
Podle mě to nemá nic společného se MappedSuperclass, pokud tedy nerozšiřuje entita ten presenter =) (= to je samozřejmě naprostý nesmysl)
- akadlec
- Člen | 1326
No s MappedSuperclass to souvislost nemá, ten sem používal i předtím, ale začalo to dělat po přidání:
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(type = "string", name = "media_type")
* @ORM\DiscriminatorMap({ "avatars" = "Models\Users\Avatars\Avatar" })
- frosty22
- Člen | 373
Tak pokud to dělá pouze jakmile tam jsou tyto řádky, tak to asi vážně netuším, sice jsem si teď hodně hrál s Doctrine anotacema a začal jsem je používat i pro své věci, ale tohlem i přijde dost zvláštní.
Bohužel discriminator jsem zatím nepoužil, a pokud tedy by se snažil číst anotace z té třídy Avatar, tak to by se ještě dalo pochopit, ale proč zrovna rozšířil čtení na třídu presenteru, to mě nenapadá.
Maximálně, ale to je velká hypotéza, že by měl namapovanou celou složku například „app“, či jakou má strukturu, a řešil ve výchozím stavu pouze objekty obsahující USE statement pro mapping Doctrine, ale poté co je použita tato anotace DiscriminatorMap, tak začne číst vše – ale tak či tak, nezdá se mi to a nevím.
Mít tento problém já, tak bych se prioritně podíval na nastavení cest k entitám.