2013-06-30 4 views
1

컨트롤러에 관한 질문이 있습니다. 그것을 시작하자 :Codeigniter - 여러 컨트롤러로 작업하기

  • 나는 "admin.php"라는 이름의 메인 컨트롤러를 가지고 있는데, 회사, 사용자 관리 등을위한 메뉴를 가지고있다. 메뉴의 각 항목은 서로 다른 종류의 데이터를 저장하는 별도의 PHP 파일을 가지고있다 [ 나는 하나의 PHP에서 그들을 모두 결합하는 데 길게 보인다. 이 예를 들어, 그래서

:

나는 3 컨트롤러를 가지고 : 나는이며, 원하는의 자식으로 회사와 관리 컨트롤러를 연결 무엇

usermanagement.php admin.php, company.php을, 관리자. 그래서 브라우저에 주소를 입력하면 다음과 같이 보일 수 있습니다. localhost/admin/company and localhost/admin/usermanagement

경로를 구성했는데 좋았지 만 "localhost/company"를 입력하면 회사 페이지를로드합니다. 나는하고 싶지 않았다. 나는 그들 모두를 관리 페이지의 자식으로 연결하고 싶었다.

어떻게하면 좋을까요? 여기 그런데

내 코드의 조각이다 :

admin.php - 컨트롤러

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Admin extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

     session_start(); 
    } 

    public function index() { 
      $this->load->view('view_admin'); 
     } 
} 

회사 - 관리자와 동일

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class Company extends CI_Controller { 

     function __construct(){ 
      parent::__construct(); 

      session_start(); 
     } 

     public function index() { 
       $this->load->view('view_company'); 
      } 
    } 

감사합니다, 제임스

편집 : 나는 같은 admin.php에 기능을 추가하는 시도 :

기능 회사() {} 기능 usermanagement() {}

하지만 난 그것 때문에 그 효과가 없습니다이었다고 생각한다 나중에 내 기본 PHP 코드를이 MVC 아키텍처 프레임 워크로 마이그레이션하려고 할 때 많은 함수가 포함될 것입니다.

답변

2

경로가 작동하는 방식이 좋지만 사람들이 index.php/company /를 방문하지 않고 관리자/회사를 방문하는 것을 선호하지 않으려면 항상 다음을 수행하십시오.

class Company extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
     if ($this->uri->segment(1) != "admin") { 
      redirect('admin/company/'.$this->uri->segment(3)); 
     } 
    } 

... 

$this->uri->segment(3)을 추가하는 것보다 완전한 URL 형성 방법이 필요하지만 일반적인 패턴이 있어야 할 것입니다.

+0

완벽. 이게 내가 찾는거야. 하지만 질문이 있는데 왜 리디렉션 부분에 오류가 발생합니까? 이걸 제거하면 정상적으로 작동합니다. 나는 또한 uri를 자동로드했지만 그 줄은 여전히 ​​오류를 던집니다. – Bajongskie

+0

redirect()를 사용하려면 URL 도우미를로드해야합니다. http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html – Dormouse

+0

아,로드되었습니다. 이 코드를 리디렉션에 추가하면 오류가 발생합니다. $ this-uri-> segment (3) – Bajongskie

0

당신은 당신의 '관리자'컨트롤러에 더 많은 기능을 추가 할 수 있으므로, 기본 페이지는 다음과 같습니다

public function index() { 
       $this->load->view('view_admin'); 
      } 

'서브 페이지는'입니다 :

public function company() { 
       $this->load->view('view_company'); 
      } 

등 등 ...

+0

나는 그것을 시도했다. 하지만 나중에 프로젝트에서 코드를 더 작성해야하므로 효과적이지 않으며 나중에 나를 혼란스럽게합니다.MVC 아키텍처가 처음이고 이전 사이트는 기본 PHP입니다. – Bajongskie

관련 문제