我試圖使用Symfony 2 Framework實現一個Internet應用程序。我創建了實體類,我在控制器中實例化了哪個類,並用數據填充了該類的變量 - 它工作正常,但是當我嘗試將數據發送到數據庫時 - 失敗(由於某些原因,持久方法失敗 - 其中我知道是因爲我將持久方法放在try-catch()代碼塊中)。Symfony 2 - 在鏈配置的命名空間中找不到實體類
在我收到如下的informaction Web瀏覽器:
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:
config.yml的<?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;
}
代碼
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 }
請問我指出我做錯了什麼?謝謝。
你可以發佈實體的學說映射嗎?也許你忘記了? – gvf
gvf你是指實體類中的getters和setter的yml頭文件嗎? – Bartosz
不,我的意思是這樣的:http://symfony.com/doc/current/book/doctrine.html#add-mapping-information – gvf