我想让我的文件夹结构适应类似的东西:
app
└─── ...
bin
└─── ...
src
└───MyNamespace
├───Application
│ ├───Controller
│ │ └───UserController.php
│ ├───Entity
│ │ └───User
│ │ ├───User.php
│ │ └───UserFactory.php
vendor
└─── ...
web
└─── ...
orm部分中的config.yml文件如下所示:
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: false
mappings:
user:
type: php
dir: %kernel.root_dir%/../src/MyNamespace/Application/Entity/User/User
prefix: MyNamespace\Application\Entity\User\User
alias: User
is_bundle: false
我的User.php文件以:
开头namespace MyNamespace\Application\Entity\User;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table()
* @ORM\Entity
*/
class User
{
...
}
然后我得到了:
InvalidArgumentException:指定的非现有目录" C:/ www / myapp / app /../ src / MyNamespace / Application / Entity / User / User"作为教义的映射源。
顺便说一下,我正在使用Symfony2框架。
答案 0 :(得分:4)
Grimv01k给了我提示,但最终的工作解决方案是在config.yml文件中:
mappings:
user:
type: annotation
dir: %kernel.root_dir%/../src/MyNamespace/Application/Model/User
alias: 'User'
prefix: MyNamespace\Application\Model\User
is_bundle: false
就是这样。如果我没有将映射类型更改为注释,我的错误是“找不到名为'MyNamespace.Application.Entity.User.User.php'的映射文件”,即使在我的文件夹项目结构中有此文件。我仍然不理解它,但它现在有效。 Noob天......:)
答案 1 :(得分:1)
好吧,我从捆绑包中获得了Entity
,并且只将配置点指向实体源,如下所示:
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: false
mappings:
user:
type: php
dir: %kernel.root_dir%/../src/MyNamespace/Application/Entity
prefix: MyNamespace\Application\Entity
alias: Entity
is_bundle: false
Entity
目录应该是目录,因此请尝试更改dir
,prefix
和alias
设置。而且实际上可以将子文件夹User
放在其中并通过名称空间使用它。
顺便说一句,您可以阅读关于Symfony
结构自定义的article。