web-dev-qa-db-fra.com

Alias ​​d'espace de nom d'entité inconnue dans symfony2

Hey j'ai deux bundles dans mon projet symfony2. l'un est Bundle et l'autre est PatentBundle. 

Mon fichier app/config/route.yml est 

MunichInnovationGroupPatentBundle:
resource: "@MunichInnovationGroupPatentBundle/Controller/"
type:     annotation
prefix:   /
defaults:  { _controller: "MunichInnovationGroupPatentBundle:Default:index" }

MunichInnovationGroupBundle:
resource: "@MunichInnovationGroupBundle/Controller/"
type:     annotation
prefix:   /v1
defaults:  { _controller: "MunichInnovationGroupBundle:Patent:index" }

login_check:
pattern:   /login_check

logout:
pattern:   /logout

j'ai dans mon contrôleur 

<?php
namespace MunichInnovationGroup\PatentBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use JMS\SecurityExtraPatentBundle\Annotation\Secure;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Security\Core\SecurityContext;

use MunichInnovationGroup\PatentBundle\Entity\Log;
use MunichInnovationGroup\PatentBundle\Entity\UserPatent;
use MunichInnovationGroup\PatentBundle\Entity\PmPortfolios;
use MunichInnovationGroup\PatentBundle\Entity\UmUsers;
use MunichInnovationGroup\PatentBundle\Entity\PmPatentgroups;
use MunichInnovationGroup\PatentBundle\Form\PortfolioType;
use MunichInnovationGroup\PatentBundle\Util\SecurityHelper;
use Exception;
/**
 * Portfolio controller.
 * @Route("/portfolio")
 */
class PortfolioController extends Controller {
/**
 * Index action.
 *
 * @Route("/", name="v2_pm_portfolio")
 * @Template("MunichInnovationGroupPatentBundle:Portfolio:index.html.twig")
 */
   public function indexAction(Request $request) {
    $portfolios = $this->getDoctrine()
    ->getRepository('MunichInnovationGroupPatentBundle:PmPortfolios')
    ->findBy(array('user' => '$user_id'));

           // rest of the method
  }

Modifier:  

Ma classe d'entité

<?php

 namespace MunichInnovationGroup\PatentBundle\Entity;

 use Doctrine\ORM\Mapping as ORM;

  /**
  * MunichInnovationGroup\PatentBundle\Entity\PmPortfolios
  *
  * @ORM\Table(name="pm_portfolios")
  * @ORM\Entity
  */
  class PmPortfolios
  {
/**
 * @var string $id
 *
 * @ORM\Column(name="id", type="string", length=36, nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="UUID")
 */
private $id;

/**
 * @var string $portfolioName
 *
 * @ORM\Column(name="portfolio_name", type="string", length=255, nullable=false)
 */
private $portfolioName;

/**
 * @var text $description
 *
 * @ORM\Column(name="description", type="text", nullable=true)
 */
private $description;

/**
 * @var string $permalink
 *
 * @ORM\Column(name="permalink", type="string", length=255, nullable=false)
 */
private $permalink;

/**
 * @var string $sharingCode
 *
 * @ORM\Column(name="sharing_code", type="string", length=255, nullable=false)
 */
private $sharingCode;

/**
 * @var boolean $shared
 *
 * @ORM\Column(name="shared", type="boolean", nullable=false)
 */
private $shared;

/**
 * @var integer $sharedPortfolioCalls
 *
 * @ORM\Column(name="shared_portfolio_calls", type="integer", nullable=true)
 */
private $sharedPortfolioCalls;

/**
 * @var boolean $isDefault
 *
 * @ORM\Column(name="is_default", type="boolean", nullable=false)
 */
private $isDefault;

/**
 * @var UmUsers
 *
 * @ORM\ManyToOne(targetEntity="UmUsers")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 * })
 */
private $user;



/**
 * Get id
 *
 * @return string 
 */
public function getId()
{
    return $this->id;
}

/**
 * Set portfolioName
 *
 * @param string $portfolioName
 */
public function setPortfolioName($portfolioName)
{
    $this->portfolioName = $portfolioName;
}

/**
 * Get portfolioName
 *
 * @return string 
 */
public function getPortfolioName()
{
    return $this->portfolioName;
}

/**
 * Set description
 *
 * @param text $description
 */
public function setDescription($description)
{
    $this->description = $description;
}

/**
 * Get description
 *
 * @return text 
 */
public function getDescription()
{
    return $this->description;
}

/**
 * Set permalink
 *
 * @param string $permalink
 */
public function setPermalink($permalink)
{
    $this->permalink = $permalink;
}

/**
 * Get permalink
 *
 * @return string 
 */
public function getPermalink()
{
    return $this->permalink;
}

/**
 * Set sharingCode
 *
 * @param string $sharingCode
 */
public function setSharingCode($sharingCode)
{
    $this->sharingCode = $sharingCode;
}

/**
 * Get sharingCode
 *
 * @return string 
 */
public function getSharingCode()
{
    return $this->sharingCode;
}

/**
 * Set shared
 *
 * @param boolean $shared
 */
public function setShared($shared)
{
    $this->shared = $shared;
}

/**
 * Get shared
 *
 * @return boolean 
 */
public function getShared()
{
    return $this->shared;
}

/**
 * Set sharedPortfolioCalls
 *
 * @param integer $sharedPortfolioCalls
 */
public function setSharedPortfolioCalls($sharedPortfolioCalls)
{
    $this->sharedPortfolioCalls = $sharedPortfolioCalls;
}

/**
 * Get sharedPortfolioCalls
 *
 * @return integer 
 */
public function getSharedPortfolioCalls()
{
    return $this->sharedPortfolioCalls;
}

/**
 * Set isDefault
 *
 * @param boolean $isDefault
 */
public function setIsDefault($isDefault)
{
    $this->isDefault = $isDefault;
}

/**
 * Get isDefault
 *
 * @return boolean 
 */
public function getIsDefault()
{
    return $this->isDefault;
}

/**
 * Set user
 *
 * @param MunichInnovationGroup\PatentBundle\Entity\UmUsers $user
 */
public function setUser(\MunichInnovationGroup\PatentBundle\Entity\UmUsers $user)
{
    $this->user = $user;
}

/**
 * Get user
 *
 * @return MunichInnovationGroup\PatentBundle\Entity\UmUsers 
 */
public function getUser()
{
    return $this->user;
}

}

Ma classe principale bundle: MunichInnovationGroupPatentBundle.php

 <?php

  namespace MunichInnovationGroup\PatentBundle;

  use Symfony\Component\HttpKernel\Bundle\Bundle;

  class MunichInnovationGroupPatentBundle extends Bundle
 {
 }

quand j'essaye de charger localhost/web/app_dev.php/portfolio

Ça dit

   Unknown Entity namespace alias 'MunichInnovationGroupPatentBundle'.

Je suis incapable de comprendre cette erreur S'il vous plaît, aidez-moi si quelqu'un a une idée que je googlé beaucoup :(

Merci d'avance 500 Erreur interne du serveur - ORMException

15
Zoha Ali Khan

S'il vous plaît, vérifiez votre config.yml.

Révisé dans la section mappings de entity_managers.
Vous devriez avoir quelque chose comme MunichInnovationGroupPatentBundle: ~

C'est:

doctrine:
    orm:
        entity_managers:
            defaults:
                mappings:
                    MunichInnovationGroupPatentBundle: ~
29
Gsanlab

Dans mon cas, il manquait le nom de l'espace de noms dans le fichier security.yml sous providers

J'ai eu:

entity: { class: AdministratorBundle:AdminUser }

et avait besoin d'avoir:

entity: { class: NamespaceAdministratorBundle:AdminUser }

8
Radek

Si vous utilisez 2 gestionnaires d’entités ou plus, vous devez également spécifier gestionnaire getManager ('YourManager')

$repository = 
    $this->getDoctrine()
    ->getManager('YourManager')
    ->getRepository('YourBundle:YourEntity');
6
mochalygin

Vérifiez que vous regroupez le nom logique (MunichInnovationGroupPatentBundle). Le nom logique de l'ensemble est le nom de la classe principale de votre ensemble, par exemple. JobsBundle

et fournissez votre code source d'entité.

2
Codium

Documentation here indique que vous pouvez utiliser la chaîne 'MunichInnovationGroupPatentBundle:PmPortfolios' comme raccourci vers 'MunichInnovationGroupPatentBundle\Entity\PmPortfolios' tant que votre entité réside sous l'espace de noms Entity de votre bundle.

Votre forfait est MunichInnovationGroupBundle donc au lieu de

->getRepository('MunichInnovationGroupPatentBundle:PmPortfolios')

utilisation

->getRepository('MunichInnovationGroupPatentBundle\Entity\PmPortfolios')
1
BartBiczBoży

S'il vous plaît, vérifiez votre config.yml + AppKernel.php

config.yml doit être

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true

ou remplacez auto_mapping par 

    mappings:
        StoreShopBundle: ~

pour en savoir plus, consultez ceci: https://stackoverflow.com/a/37652091/5809937

dans AppKernel.php N'oubliez pas de vérifier si bundle est activé:

        new MunichInnovationGroup\PatentBundle\MunichInnovationGroupPatentBundle(),
1
Vladimir Ch

Essayez d’être plus explicite dans votre fichier config.yml en ajoutant quelques champs:

orm:
    ...

    mappings:
        MunichInnovationGroupPatentBundle:
                type: annotation
                dir: "MunichInnovationGroupPatentBundle/Controller"
                is_bundle: true
                prefix: MunichInnovationGroup\PatentBundle
                alias: MunichInnovationGroupPatentBundle
        [more mappings..]
1
Rusty Harding

Comme dans Symfony version 2.3.7, j’utilisais NameofCompanySomethingBundle: EntityRequired, par exemple AcmeBlogBundle: Utilisateur et ça marche. 

auto-mapping: true (par défaut) a été utilisé sous orm: dans config.yml.

0
Paul A.

ouvrez votre application\config.yml, doit être 

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
replace to
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
              MunichInnovationGroupPatentBundle: ~
0
Mr Ye

J'ai eu cela lorsque j'ai essayé d'utiliser le nom de bandle sans nom de dossier principal. C'était dans config/security.yml

La structure des dossiers dans mon cas est la prochaine src/Dp/UserBundle/....

J'ai changé cela `Fournisseurs:

    main:
        entity: { class: UserBundle:User, property: username }`

à ce `fournisseurs:

    main:
        entity: { class: DpUserBundle:User, property: username }`

Donc, copiez le nom de l'entité inconnue et recherchez chaque entrée dans le projet, cochez - elles doivent être avec le préfixe de dossier (Dp dans mon cas)

0
1nstinct

Cette erreur se produira si vous utilisez plusieurs gestionnaires d'entités et que vous ne spécifiez pas le gestionnaire d'entités dans votre fonction de contrôleur. 

$em = $this->get('doctrine.orm.//your_entity_manager_name_here//_entity_manager');
$dql   = "SELECT ...";
$query = $em->createQuery($dql);

cela a fonctionné pour moi.

0
sjt003