2017-10-27 5 views
2

응용 프로그램에 사용자 정의 Symfony 번들을 설치하려고합니다. 나는 다음과 같은 폴더 구조와 번들을 생성 :로컬 Symfony 번들을로드 할 때 ClassNotFoundException이 발생했습니다.

. 
├── composer.json 
├── composer.lock 
└── src 
    └── Namespace 
     └── CoreBundle 
      ├── Controller ... 
      ├── CoreBundle.php 
      ├── Entity ... 
      ├── Helper ... 
      ├── Repository ... 
      ├── Resources ... 
      ├── Services ... 
      └── Tests ... 

나는 성공적으로 vendor 폴더에 composer install에 의해 번들을 설치했습니다. sym-link로서 vendor/namespace/core-bundle 아래 있습니다 (로컬로로드했습니다).

는 그 후 나는 AppKernel.phpnew Namespace\CoreBundle\CoreBundle(),을 추가하고이 다음과 같은 오류가 발생합니다 : 나는 SYM 연결에 문제가있는 경우, vendor 폴더에 수동으로 폴더를 복사하려고

(1/1) ClassNotFoundException 

Attempted to load class "CoreBundle" from namespace "Namespace\CoreBundle". 
Did you forget a "use" statement for another namespace? 
in AppKernel.php (line 25) 

하지만, 동일한 오류가 발생합니다. dump(ClassMapGenerator::createMap('/path/to/symfony'));에 의해 자동로드 된 클래스를 체크 아웃하고 거기에 내 네임 스페이스를 찾지 못했습니다. 구성이 잘못되었거나 폴더 구조가 잘못 되었습니까? 더 많은 코드가 필요하면 최대한 빨리 내 질문을 업데이트하겠습니다.

업데이트 : 내 번들 composer.json :

{ 
    "name": "namespace/core-bundle", 
    "license": "proprietary", 
    "type": "symfony-bundle", 
    "autoload": { 
    "psr-4": { 
     "Namespace\\CoreBundle\\": "src/Namespace/CoreBundle" 
    } 
    }, 
    "require": { 
    "doctrine/doctrine-bundle": "^1.6", 
    "doctrine/orm": "^2.5", 
    "liip/imagine-bundle": "1.9.*", 
    "php": ">=5.5.9", 
    "symfony/symfony": "3.3.*" 
    }, 
    "require-dev": { 
    }, 
    "extra": { 
    "branch-alias": { 
     "dev-master": "development" 
    } 
    } 
} 
+1

당신은 당신의 CoreBundles을'게시 할 수 있습니다 작곡가 .json'. – ccKep

+0

'composer.json'을 추가했습니다. – mgluesenkamp

+1

autoload psr-4 부분에서''Namespace \\ CoreBundle \\ '': "src /"'를 말하지 않아야합니까? 편집 : nvm - psr-0을 생각하고있었습니다. 'composer dump-autoload -a'를 사용하여 오토로더를 수동으로 덤프 한 후에 작동합니까? – ccKep

답변

1

당신의 composer.jsonautoload 섹션의 모든 수동 업데이트 후 :

{ 
    "autoload": { 
     "psr-4": { 
      "Namespace\\CoreBundle\\": "src/Namespace/CoreBundle" 
     } 
    } 
} 

을 갱신하는 것을 잊지 마세요 당신의 CLI를 통해 /vendor/autoload.php 생성 :

composer dump 
# shortcut for `composer dump-autoload` 
1

난 당신이 composer.json에 자동로드의 자동로드를 추가하기 전에 composer install를 실행 한 느낌이 듭니다. 이 문제는 설치시 .json 파일을 무시하고 잠금 파일을 위해 곧바로 진행되며 잠금은 이전 종속성을 모두 저장하여 이전에 테스트 한 상태로 둡니다.

당신이 찾고있는 것은 composer update입니다. .lock 파일을 삭제하고 향후 설치 명령을위한 새로운 .lock 파일을 생성합니다.

+0

수동으로'.lock' 파일을 삭제하고'composer update'를 실행했지만 문제가 지속됩니다. : – mgluesenkamp

+0

입력 스크립트에'require ('path/to/vendor/autoload.php')'가 있습니까? – SmartCoder

+2

도움을 주셔서 감사합니다. 'composer dump-autoload -a'이 트릭을했습니다. – mgluesenkamp

관련 문제