Codeigniter HMVC 및 CMS
-
19-09-2019 - |
문제
HMVC Modular Extension과 함께 CodeIgniter를 사용하고 있으며 웹 사이트 콘텐츠를 관리하기위한 백엔드 CMS 영역이 있습니다. 기본 URL + "Admin"을 라우팅하고 있습니다.http : // localhost/cms/admin) prefix "admin_"를 사용하여 컨트롤러 메소드에.
e.g. function admin_index() {...}
그리고 여기 내 라우팅이 있습니다.
$route['admin/([a-zA-Z]+)/(:any)'] = "$1/admin_$2"; $route['^admin/(:any)(/)?'] = "$1/admin_index"; $route['^admin(/)?'] = "dashboard/admin_index"; $route['admin/logout'] = "login/admin_logout";
HMVC를 사용하면 지금 올바르게 라우팅되지 않습니다. 다음은 다음과 같습니다.
URL: http://localhost/cms/admin/faqs Directory: modules/faqs/controllers/faqs - index method -- here is where it breaks -- URL: http://localhost/cms/admin/faqs/categories Directory: modules/faqs/controllers/faqs - categories method (does not exits) Desired: modules/faqs/controllers/categories - index method
웹 사이트의 "관리자"를 유지하는 동안 HMVC를 어떻게 사용할 수 있습니까?
해결책
당신은 동일한 컨트롤러에 프론트 엔드와 백엔드 기능을 배치하여 인생을 너무 까다 롭게 만들고 있습니다. 내 기사를 살펴보십시오 Codeigniter에서 관리자 구조를 만드는 방법.
다른 팁
나는 비슷한 일을하고 있는데, 당신이했던 것처럼 스왑을 구현했으며 (3 번째 옵션) 잘 작동했습니다.
관리자 섹션을 처리하기 위해 프론트 컨트롤러를 구현하고 HMVC 모듈을 사용하여 모듈을 실행하고 원하는대로 출력을 버퍼링하려고했지만 다른 문제에 직면 했으므로 URI 체계를 /에서 변경해야합니다. CI가 라우팅 메커니즘의 경우 "/"에 의존하기 때문에 모듈 세그먼트를 컨트롤러에 매개 변수로 보낼 수 없기 때문에 _ 또는 다른 것입니다.
Phil이 제안한대로 관리 섹션을 모방하는 유일한 방법은 CMS를 사용하는 사람이 구현 한 코드를 여전히 제어 할 수있는 또 다른 옵션이 있습니다.
CI_CONTROLLER (또는 HMVC를 사용하는 경우 MX_Controller)를 확장하고 로직을 처리하고 모듈이 수행 할 수있는 일을 제어 할 admin_controller를 추가 할 수 있습니다.
이것을 살펴보십시오 Codeigniter 기본 클래스 : 건조 유지