2011-07-04 4 views
2

페이지/토론이 있는데 여기에 페이지 매김을 구현하고 싶습니다. 이제, 페이지가/discussion으로로드되어야합니다. 즉,/discussion/page/1 인 것처럼이 동작을 의미합니다. 다른 페이지의 경우 URL은/discussion/page/$ pagenumber입니다.Codeigniter 페이지 매김 개념적 문제

이제 문제는 index()입니다. 일반적으로 index()에있는 모든 페이지 데이터를 초기화 한 다음 초기화 된 데이터로 뷰를로드합니다. 그러나 여기에서는 index()에서 기본 페이지 항목을 초기화 한 다음 page()에서 페이지 매김 항목을 초기화해야합니다. 그래서, 다른 데이터 세트를 page()에서 뷰로 보내는 방법이 있습니까? 나는 그것이 인덱스()에 의해로드 될 것이기 때문에 뷰를로드하고 싶지 않다.

그러나 나는 위에서 언급 한 것을 할 수 없다고 생각합니다. 그래서, 어쩌면 내 index() 빈 유지하고 페이지() 초기화하고 모든 뷰를로드해야합니다. 너 무슨 소리 야?

답변

4

"페이지"및 "색인"방법이 모두 필요하지 않으므로 route 만 사용하면됩니다.

index() 방법을 사용하고 page() 방법을 떨어 뜨리고는 :

$route['discussion/page/(:num)'] = 'discussion/index/$1'; 

/discussion 여전히 discussion/index/32

이 인수로 페이지 번호를 부여 잡고있는 가정에 매핑합니다 discussion/page/32를 요청하면 1 페이지를 제공합니다 (URL 세그먼트) :

function index ($page = 1) {} 

뭔가 다른 일을하고 있지만, 경로는 여전히 적절합니다. 아마도 제공된 경로가 아닙니다.

+0

나는 이것을 시도하고 조금 작동하는 것 같다. 그러나 모든 이미지 파일 경로가 변경됩니다. 이미지를 ../images/imagename.jpg로 가져 오지만 이러한 페이지 매김을 변경하면 ../../images/imagename.jpg를 사용하여 이미지를 가져와야합니다. 경로를 추가하는 경로 :(. – Blueboye

+0

문제는 이미지의 상대 경로 사용에 있습니다. 전체 URL 인'/ absolute/paths/to-image.jpg'를 사용하거나'img()'함수를 호출 할 수 있습니다. 동적 URL을 처리 할 때 상대 경로에 의존 할 수 없습니다 .. –

+0

멋지다. 한 가지 더 : 페이지 매김 영역의 첫 페이지는/discussion/page입니다./discussion/page/1 또는 just/discussions로 어떻게 변경합니까? – Blueboye

1

나는 PEAR의 굉장한 Pager package을 살펴볼 것을 제안합니다. 자동으로 호출기를 생성하고 (GET) 입력 변수에 따라 올바른 색인을 제공합니다.

0

나는 당신의 문제가 무엇인지 잘 모르겠습니다.

index() 방법을 사용하는 경우 여기에 모든 페이지 매김 정보를 설정할 수 있습니다. 페이지 번호를 얻기 위해 사용하는 uri 세그먼트를 페이지 매김 라이브러리에 알려줘야하며 페이지 매김 정보와 관련이 없습니다. index().

컨트롤러에 page() 메서드가 없습니다. 페이지 번호로 정의 된 uri_segment로 지정된 페이지 번호가 다른 데이터 집합이있는 모든 페이지가 동일합니다. 즉, 해당 페이지와 관련된 모든 항목을 의미합니다. paginated queryset 페이지를 통해 그대로 있습니다.

+0

그러면 URL이 어떻게 다른 페이지에 표시 될 것입니까? – Blueboye

+0

그러나/discussion/index/2 또는/discussions/index/page/2 ('토론'은 컨트롤러의 이름이고 'index'는 메소드)라고 할 수 있습니다. URL에서'index'를 제거하고'page' 만 사용하려면 라우트 설정 파일에 해당 URL을 설정해야합니다 : '$ route [ 'discussion/page/: any'] = "discussion/index/page/$ 1 "; ' – ramono

0

페이지 메서드에서 색인 방법을 꾸미려고하는 것 같습니다. 컨트롤러의 전체 구조에 대한 자세한 내용을 모른 채, 정말 말을 정말 많이가 아니지만, 아래에 도움이 될 것 같은 소리 : 당신이 당신의 URI 라우팅 클래스 또는 사용에 보일 것입니다,

function page($pos) 
{ 
    $this->index($pos); 
} 

// a default parameter lets you ensure that this does not neet to have a page set. 
function index($pos = 0) 
{ 
    // when calling the DB (I'm guessing that is where the pagination really happens) 
    // COUNT should be defined in the config if possible. 
    $this->db->where/*... add more here...*/->limit(COUNT, $pos); 
} 

을 현실적으로 _resolve 메서드를 사용하지만 필요한 작업을 수행해야합니다.