Symfony 2 - 在链配置的命名空间中找不到实体类

时间:2016-02-06 21:15:01

标签: symfony entity

我正在尝试使用Symfony 2 Framework实现互联网应用程序。我创建了实体类,我在控制器中实例化了这个类,并且我用数据填充了该类的变量 - 它工作了,但是当我尝试将数据发送到数据库时 - 它失败了(由于某些原因,持久化方法失败 - 我知道的是因为我将persist方法放在try-catch()代码块中。)

在网络浏览器中,我收到如下信息:

string 'The class 'AppBundle\Entity\Practice_Words' was not found in the 
chain configured namespaces ' (length=93)

控制器代码:

<?php

  namespace AppBundle\Controller;

  use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  use Symfony\Component\HttpFoundation\Request;
  use AppBundle\Entity\Practice_Words;

  class DefaultController extends Controller
  {
  /**
   * @Route("/", name="homepage")
   */


   public function indexAction()
   {

    $practiceWords = new Practice_Words();
    $practiceWords->setEnglishWord("kind");
    $practiceWords->setPolishWord("rodzaj");

    $em = $this->getDoctrine()->getManager();

    try{
    $em->persist($practiceWords);
    $em->flush();
    }catch(\Exception $e) {
        var_dump($e->getMessage());
    }

    return $this->render('AppBundle:Default:index.html.twig');
   }
 }

实体 - Practice_Words:

<?php

  namespace AppBundle\Entity;

 /**
  * Practice_Words
  */
 class Practice_Words
 {
 /**
  * @var int
  */
     private $id;

 /**
  * @var string
  */
     private $englishWord;

/**
 * @var string
 */
    private $polishWord;

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

/**
 * Set englishWord
 *
 * @param string $englishWord
 *
 * @return Practice_Words
 */

public function setEnglishWord($englishWord)
{
    $this->englishWord = $englishWord;

    return $this;
}

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

/**
 * Set polishWord
 *
 * @param string $polishWord
 *
 * @return Practice_Words
 */
public function setPolishWord($polishWord)
{
    $this->polishWord = $polishWord;

    return $this;
}

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

config.yml代码

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }

# Put parameters here that don't need to change on each machine where     
  the  app is deployed

# http://symfony.com/doc/current/best_practices  
  /configuration.html#application-related-configuration
 parameters:
 locale: en

 framework:
 #esi:             ~
 #translator:      { fallbacks: ["%locale%"] }
 secret:          "%secret%"
 router:
    resource: "%kernel.root_dir%/config/routing.yml"
    strict_requirements: ~
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
#serializer:      { enable_annotations: true }
templating:
    engines: ['twig']
    #assets_version: SomeVersionScheme
default_locale:  "%locale%"
trusted_hosts:   ~
trusted_proxies: ~
session:
    # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
    handler_id:  session.handler.native_file
    save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"
fragments:       ~
http_method_override: true
assets: ~

# Twig Configuration
twig:
debug:            "%kernel.debug%"
strict_variables: "%kernel.debug%"



 # Doctrine Configuration
 doctrine:
    dbal:
    driver:   pdo_mysql
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    # if using pdo_sqlite as your database driver:
    #   1. add the path in parameters.yml
    #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
    #   2. Uncomment database_path in parameters.yml.dist
    #   3. Uncomment next line:
    #     path:     "%database_path%"

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

    # Swiftmailer Configuration
    swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
username:  "%mailer_user%"
password:  "%mailer_password%"
spool:     { type: memory }
你能指出我做错了什么吗?谢谢。

1 个答案:

答案 0 :(得分:0)

我认为问题可能出在你的班级命名中。 根据PSR-4类名必须在CamelCase中写下来。而对于你的班级教义 'AppBundle \ Entity \ Practice_Words'=&gt; '的appbundle \实体\实践\ Words.php' 尝试重命名您的类并检查您的数据库表名称。