문제

CodeIgniter에서 앱을 작업 중이며 응용 프로그램의 여러 개체에 대한 관리 페이지를 갖고 싶습니다.이를 MVC 구조에 넣을 수있는 더 좋은 방법이 무엇인지 궁금합니다.

아이디어 1 : 아이디어 1.각 컨트롤러에는 관리자 기능이 있고 원하는 모든 관리자 페이지를 해당 기능에 추가하십시오. 예제 URL : domain.com/articles/admin

아이디어 2다양한 모델을 참조 해야하는 새로운 관리자 컨트롤러를 만들고 모든 관리자 페이지를 거기에 넣으십시오. 예제 URL : domain.com/admin/articles

어떤 방법이 더 좋을까요?

설명 편집 : 관리자 기능을 통해 모든 객체에서 기본 CRUD 작업을 수행하고 상기 객체의 모든 목록을 표시 할 수 있다는 것을 의미합니다.

도움이 되었습니까?

해결책

저스틴은 개별 컨트롤러의 일부를 유지하는 데 반향을 일으킬 것입니다.

개별 컨트롤러가 로그인 한 사람 (사용자 이름)과 액세스 권한 (관리/회원/등)에 사용할 수있는 일종의 권한 부여 시스템을 설정해야합니다. Codeigniter Auth 클래스의 So Thread가 있습니다.

그런 다음보기에는 적절한 링크가 조건부로 표시되며 컨트롤러는 데이터를 모델로 전달하거나 편집보기를 렌더링하기 전에 인증을 확인하여 정책을 시행합니다. 무단 액세스에서 오류가 렌더링되거나 단순히 비 편집보기로 렌더링 할 수 있습니다.

이 접근법은 모든 기능이 개별 컨트롤러에 저장되기 때문에 (적어도 나에게) 가장 의미가있는 것 같습니다. 관리자 기능을 단일 관리자 컨트롤러에 유지한다는 것은 새롭게 새로 추가 할 때마다 (또는 무언가를 제거 할 때마다) 두 개의 컨트롤러 (관리자 및 실제 컨트롤러)를 관리해야한다는 것을 의미합니다.

모든 컨트롤러에 인증 체크인을 넣는 데 관심이있는 경우 모든 인증 설정으로 일반 컨트롤러 클래스를 만들 수 있습니다. 컨트롤러가 확장하도록하십시오. 결국 개별 컨트롤러 인증 점검은 다음과 같이 간단 할 수 있습니다.

function edit()
{
    if(!$this->auth()){
        //display auth error, or forward to view page
    }
}

물론 어떤 종류의 ACL 구현이 더 나아질 것이지만, Codeigniter가 '공식'ACL을 가지고 있다고 생각하지 않습니다.

다른 팁

확실히 다른 컨트롤러 적어도!

나는 모든 관리자 기능을 단일 컨트롤러에 유지할 수 있다고 생각했지만 프로그램이 성장함에 따라 관리 섹션에서 여러 컨트롤러가 필요하다는 것을 깨달았습니다.

그래서 컨트롤러 폴더 내에 "admin"이라는 폴더를 만들고 모든 관리 컨트롤러를 거기에 넣었습니다. 그래서 내 폴더는 다음과 같습니다.

  • 신청
    • 컨트롤러
      • Front.php
      • 환영합니다 .php
      • 관리자
        • Dashboard.php
        • userAdmin.php
  • 등...

그러나 이것이 생성하는 한 가지 문제는 http://mysite.com/admin 브라우저에서는 404 페이지를 반환합니다. 따라서 "application/config/lours.php"파일로 이동하여 사용자 정의 경로를 추가하십시오.

$routes['admin'] = 'admin/dashboard/index';

컨트롤러 폴더에 관리자 폴더를 두는 것이 좋습니다.

귀하의 모든 관리 요구 사항이 있으며 모든 방법이 사용자 권한을 확인하여 보호됩니다.

if ( ! $this->auth->logged_in(array('login', 'admin')))
{
    $this->session->set_flashdata('message', 'You do not have access to view this page');

    redirect('admin/users/login');
}

그런 다음 '관리자'폴더 외부의 모든 컨트롤러는 사이트 유형에 따라 시청을위한 것입니다. 관리 부분이 없습니다.

아이디어 2가 더 좋습니다. 시스템/애플리케이션/컨트롤러/관리자

모든 관리자 컨트롤러를 여기에 보관합니다.

다음은 각 방법의 프로 및 사기에 대한 광범위한 안내서입니다.

http://philsturgeon.co.uk/news/2009/07/create-an-admin-panel-with-codeigniter

'관리자'기능이 의미하는 바에 따라 ... 일반적으로 이것은 '편집'보기로 생각됩니다.

일반적으로 기존 컨트롤러를 사용하여 공인 사용자가 편집을 할 수 있도록 '편집'보기를 제공합니다 (귀하의 경우 관리자 사용자 만).

개인적인 선택처럼 보입니다. 저는 모든 것을 중앙 집중화하는 것을 좋아하므로 관리자 컨트롤러가 내 베팅이 될 것입니다.

그렇게하면 관리자 작업을 수정하면서 5 개의 다른 컨트롤러를 열 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top