首页 文章

无法找到捆绑的基本路径

提问于
浏览
5

我正在使用Symfony2并希望通过运行为实体生成getter和setter:

$ php app/console doctrine:generate:entities TestBundle

enter image description here

控制台返回以下消息:

[RuntimeException]找不到“TestBundle”的基本路径(路径:“C:\ xampp \ htdocs \ ProjectX \ src \ Namespace \ TestBundle”,目的地:“C:/ xampp / htdocs / ProjectX / src / Namespace / TestBundle“) .

Bundle存在于这个位置: C:\xampp\htdocs\ProjectX\src\Namespace\TestBundle

怎么了?

4 回答

  • 0

    只是为了添加别的东西以防其他人达到这个目的 . 我有一个问题导致相同的错误,但这是由于我的实体生活在使用PSR-4的代码库中 . 在进行代码生成时,Doctrine不支持PSR-4 . 它与将类名称空间映射到文件系统路径以及PSR-4如何允许不直接映射到文件系统的类/命名空间路径有关 .

    https://github.com/doctrine/DoctrineBundle/issues/282

  • 2

    我有这个问题是由我的bundle目录中的小写/大写的一些问题引起的 . 它不应该是Windows下的问题,但php函数str_replace是区分大小写的,生成错误

    //Doctrine\Bundle\DoctrineBundle\Mapping\MetadataFactory
    
    private function getBasePathForClass($name, $namespace, $path)
        {
            $namespace = str_replace('\\', '/', $namespace);
            $search = str_replace('\\', '/', $path);
            $destination = str_replace('/' . $namespace, '', $search, $c);
    
            if ($c != 1) {
                throw new \RuntimeException(sprintf('Can\'t find base path for "%s" (path: "%s", destination: "%s").', $name, $path, $destination));
            }
    
            return $destination;
        }
    

    Doctrine无法根据命名空间重新创建类路径:这意味着您的命名空间或文件夹错误(检查案例)

  • 0

    您的Bundle php文件的名称从 TestBundle.phpNamespaceTestBundle.php 在路径中是错误的更改: C:/xampp/htdocs/ProjectX/src/Namespace/TestBundle/

  • 5

    John Pancoast's answer是对的 .

    只是为了添加别的东西以防其他人达到这个目的 . 我有一个问题导致相同的错误,但这是由于我的实体生活在使用PSR-4的代码库中 . 在进行代码生成时,Doctrine不支持PSR-4 . 它与将类名称空间映射到文件系统路径以及PSR-4如何允许不直接映射到文件系统的类/命名空间路径有关 . https://github.com/doctrine/DoctrineBundle/issues/282

    准确说明解决错误消息所需的内容;编辑您的包的 composer.json 文件,并更改包的文件夹结构 .

    composer.jsonpsr-4 更改为 psr-0

    "autoload": {
        "psr-4": { "Acme\\Bundle\\AwesomeBundle\\": "" }
    },
    

    至:

    "autoload": {
        "psr-0": { "Acme\\Bundle\\AwesomeBundle\\": "" }
    },
    

    更改bundle的文件夹结构:

    vendor
     +--acme
         +--awsome-bundle
             |--Controller
             |--Entity
    

    至:

    vendor
     +--acme
         +--awsome-bundle
             +--Acme
                 +--Bundle
                     +--AwsomeBundle
                         |--Controller
                         |--Entity
    

    以下命令不再抛出异常:

    bin/console doctrine:generate:entities AwesomeBundle
    

相关问题