2012-11-20 5 views
2

저는 Zend Framework 애플리케이션을 구축하고 데이터베이스 테이블에 해당하는 컨트롤러를 만들고 이러한 테이블에서 CRUD 작업을 수행하는 방법을 사용합니다.Zend Framework의 중첩 컨트롤러

방금 ​​기업 추가, 수정 및 삭제 방법을 보유한 컨트롤러 인 Companies 컨트롤러를 시작했습니다.

http://example.com/companies/some-company/machines/add 
http://example.com/companies/another-company/contacts/edit/some-contact 

난 그냥 얻을 수없는 내 머리 :

http://example.com/companies/add 
http://example.com/companies/edit/some-company 

문제는 각 Company에 대해 우리는 또한 ContactsMachines를 관리 할 필요가있다 :이를 위해 우리는 기존의 controller/action URL 패턴을 사용할 수 있습니다 젠드 프레임 워크 (Zend Framework)에서 이것을 어떻게 관리 할 것인가. 라우팅을 통해 컨트롤러를 중첩시켜야합니까? 아니면 모듈을 사용해야합니까? 어떤 도움이라도 대단히 감사 할 것입니다.

답변

4

쉽게이 문제를 처리하기 위해 사용자 정의 경로를 작성할 수 있습니다. 예를 들어,이 :

http://example.com/companies/some-company/machines/add 

은 .ini 파일에 될 것입니다 :

routes.machine.route = "companies/:companyname/machines/:action" 
routes.machine.defaults.controller = machines 
routes.machine.defaults.action = index 

machines 컨트롤러에 URL을 지적하고, GET-VAR로 companyname을 설정합니다.

원하는 형식에 맞게 쉽게 변경할 수 있습니다.

1

젠드 프레임 워크 기본 라우터는 URL이 작동하지 않습니다. 이 링크가 작동해야합니다

http://example.com/companies/add 
http://example.com/companies/edit/id/some-company 
http://example.com/companies/addmachines/id/some-company// 
http://example.com/companies/contacts/mod/edit/companyid/another-company/ 

형식 :

http://yoursite.com/Module(if available)/Controller/Action/param1/val1/param2/val2/?param3=val3 
+0

당신이 말하는대로, 당신은'contacts' 또는'machines' 컨트롤러를 만들지 않습니까? URL에 일종의 계층 구조를 유지하고 싶습니다. 따라서 'http : // example.com/companies/id/some-company/machines/add' 또는 http://example.com/companies/id 형식을 유지하고 싶습니다./some-company/machines/edit/id/some-machine'이 필요합니다. 이것이 가능한가? –