2014-11-13 1 views
3

저는 빠르게 성장하는 어플리케이션에서 일하고 있습니다. 시간이 지남에 따라 점점 더 많은 컨트롤러를 야기하고 있으며 항상 우수 사례를 유지하려고 노력하고 있습니다. 컨트롤러 당 많은 라인. 지금 Controller 디렉토리에 거의 40 컨트롤러가 그것을 발견 조금 복잡의 한 때 다음과 Controller 디렉토리 아래에 내가 그 안에서 하위 폴더 위해 생각하고 코드 또는 편집하거나 다른 것을 추가해야Symfony2의 주어진 컨트롤러 디렉토리 구조에서 리소스를 가져 오는 방법

src\ 
    AppBundle\ 
     Controller\ 
      Comunes\ 
       CiudadController.php 
       DuplicadosCedulaController.php 
       ... 
      RegistroUsuarios\ 
       EmpresaController.php 
       NaturalController.php 
       ... 
      RPNI\ 
       CodigoArancelarioController.php 
       RPNIProductoPaso1Controller.php 
       ... 
      BuscarEmpresaController.php 
      DistribuidorController.php 
      ... 

그러나

FileLoaderLoadException : 에서 "/var/www/html/project.dev/src/AppBundle/Controller/"을 "자원 를 가져올 수 없습니다은/var/www /에서 html로 그 재정렬 내 응용 프로그램에서이 오류의 원인이되는 /projectdev/app/config/routing.yml ". 분명히 심포니 그것이 Controller 디렉토리에없는 때 컨트롤러 클래스를 찾을 수 없기 때문에

을 (클래스 AppBundle \ 컨트롤러 \ EmpresaController가 존재하지 않습니다). this 주제를 찾았지만 문제가 무엇인지 명확하지 않습니다. 이게 가능한지 모르겠다. 아니면 symfony 문서에서 Controller Naming Pattern을 읽었지만 그렇게 도움이되지는 않는다. 이것에 대한 조언이 있습니까? 해결 방법은 무엇입니까? 더 나은 프로젝트 구조 조직을위한 제안?

참고 : 응용 프로그램 이후 두 개 이상의 별도의 번들 작품은 그래서 하나 개의 번들로 제공 Syfmony Best Practices을 다음 않는다는 의미

편집

이 이상해가 없기 때문에 나는 단지 하나 개의 번들을 만들어 그리고 모든 것이 다시 작동하는지 모르겠다. 위의 예제에서 보여준대로, 모든 컨트롤러를 Controller에서 하위 폴더로 옮겼다. 전혀 변경하지 않았다. routing.yml 그리고 Symfony는 컨트롤러를 계속 사용하고있다. 하위 폴더에서 : 놀라운 !! 아 매우 중요 그냥 기억 지우기 캐시 명령, 내가 믿는 가장 중요한 Symfony 명령, 많은 개발자 문제가 이것의 원인입니다, 나는 그것을 지우고 변경 사항을 테스트 완료 잊어 버렸습니다 !!

답변

1

은 작업 예입니다?

+0

내가 솔루션을 테스트하고 있지 않다 AppBundle \ 컨트롤러 \ Comunes에 AppBundle \ 컨트롤러에서

CiudadController.php DuplicadosCedulaController.php .... 

의 네임 스페이스를 변경하고, 아마도 그것은 작동하지만 내 코드의 시작이 다시 작동하기 때문에 나는거야 당신에게 포인트를주세요, 내 에디션을보십시오 – ReynierPM

+0

@ReynierPM 제가 사용하고 있기 때문에 Sylius 소스 코드에서이 기술을 보아 왔습니다 ..하지만 당신의 솔루션은 이상하게 보입니다. – xurshid29

+0

이미 확인해 봤습니다. 이제는 더하고 있습니다. 테스트하고 다시 테스트하지만 걱정하지 마십시오. 실수가 있습니다 – ReynierPM

0

이론적 인 대답 일 뿐이므로 결코 시도하지 않았습니다. 이와 같은 컨트롤러를 가지고 싶다면 in the routing을 매핑해야합니다. 모든 다른 디렉토리 등

comunes: 
    resource: "@yourBundle/Controller/Comunes" 
    type: annotation 

을 그리고 :

Controller\ 
     Comunes\ 
      CiudadController.php 
      DuplicadosCedulaController.php 

는 다음 라우팅 YAML에 일치됩니다. 내가 아는 한 컨트롤러/디렉토리에서 자동으로로드되지만 다른 장소에 배치하면 라우팅에서 참조해야합니다.

라우팅 :

st_mainsiteweb_admin_subsite_create_template: 
    path: /subsite/create-template 
    defaults: 
     _controller: STMainSiteWebBundle:Admin/SubSite:createTemplate 

디렉토리 구조 :

ST\ 
    MainSiteWebBundle\ 
      Controller\ 
         Admin\ 
         SubSiteController -> createTemplateAction 

이것이 당신이 찾고있는 여기

1

2 시간, 이제는 확인, 라우팅 없음, 다른 파일 없음.

그냥

+0

태그의 줄 번호 – dbmitch