2011-11-20 8 views
0

이것은 다른 사용자에게 잘려나 간 것 같지만 달성하고자하는 것과 관련된 것으로 보이는 대답을 보지 못했습니다.페이지 매김을 사용한 CakePHP 라우팅

그래서 기본적으로 나는 /admin/portfolio/

에서 내 포트폴리오의 관리자 패널을하고 난 다음 페이지로 갈 때 나는이 얻을 : /admin/portfolio/index/page:2와 나는에서 인덱스를 제거하려면 어떻게

1. /admin/portfolio/index/page:1) URL? 그래서 page:1 그냥 /admin/portfolio/하고 누군가가 1 페이지로 이동하려고하면 다음 그냥 매개 변수없이 단지 인덱스로 리디렉션/URL을 변경 그래서 내가 어떻게해야합니까 단지 /admin/portfolio/page:2

2)입니다. 그렇지 않으면 첫 번째 페이지에 대해 중복 된 것을 의미합니다.

앞서 언급했듯이 온라인에서 몇 가지 예를 살펴 보았지만 모두 매우 혼란스럽고 동일한 코드가 아닌 것 같습니다 (아래 참조). 그래서 내가하는 일을 성취 할 수 있는지 잘 모르겠습니다.

<?php echo $this->Paginator->numbers(); ?> 

    <?php echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); ?> 
    <?php echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); ?> 

    <?php echo $this->Paginator->counter(); ?> 

나는이 시도 :

<?php $this->Paginator->options(array('url'=>array(
'admin'=>true, 
'controller' => 'portfolio', 
    'action' => 'index'))); ?> 

을하지만 난 여전히

그러나이 추가 URL에 인덱스를 얻을 : Router::connect('/admin/portfolio/*',array('admin'=>true,'controller'=>'portfolio','action'=>'index'));는 URL의 색인을 없애 않습니다 그러나 이것은 원인 두 번째 문제는 URL에 아무 것도 추가 할 수 없으므로 더 이상 엄격하지 않으며 가짜 페이지를 볼 때 404가 표시됨

그래서 시도해 보았습니다.

Router::connect('/admin/portfolio/:page', 
        array('admin'=>true,'controller'=>'portfolio','action'=>'index', 
        array(
        'pass' => array('page'), 
        'page'=> '[0-9]+' 
        ))); 

하지만 라우팅에서 페이지를 볼 수 없기 때문에 작동하지 않습니다.

+0

모든 업데이트/감사 – Cameron

답변

1

경로를 명시 적으로 선언하는 것이 좋습니다. 이렇게하면 응용 프로그램의 다른 컨트롤러/동작을 방해하지 않을 것입니다. 그걸 염두에두고

, 응용 프로그램의 포트폴리오 부분에 대한 당신 경로 정의는 다음과 같이 보일 것이다 : 나는 정말이 이상 난처한 해요로

/** 
* add, edit and delete actions 
*/ 
Router::connect('/admin/portfolio/add', array(
    'controller' => 'portfolio', 'action' => 'add', 'admin' => true 
)); 
Router::connect('/admin/portfolio/delete/:id', array(
    'controller' => 'portfolio', 'action' => 'delete', 'admin' => true), array(
    'pass' => array('id') 
) 
); 
Router::connect('/admin/portfolio/edit/:id', array(
    'controller' => 'portfolio', 'action' => 'edit', 'admin' => true), array(
    'pass' => array('id') 
) 
); 

/** 
* index action 
*/ 
Router::connect('/admin/portfolio', array(
    'controller' => 'portfolio', 'action' => 'index', 'admin' => true, 'page' => 1 
)); 
Router::connect('/admin/portfolio/*', array(
    'controller' => 'portfolio', 'action' => 'index', 'admin' => true), array(
    'named' => 
     array('page' => '[\d]+'), 
) 
); 
+0

유일한 문제는이다 가짜 URL이 작동 함을 의미합니다. '/ admin/portfolio/fake-url' 그리고 404를 표시하지 않습니다. – Cameron

+0

또한 페이지 1은 여전히 ​​작동하고 URL 복제를 수정하기 위해 리디렉션하지 않습니다. – Cameron

+0

@Cameron 컨트롤러에서 '가짜 URL'을 극복 할 수 있습니다 명명 된 param 'page'또는 기본값 'page'가 항상 존재하는지 확인하십시오. 그렇지 않은 경우 404 또는 Exception을 발행하십시오. 두 번째 메모와 관련하여 페이지 매김은이 URL을 출력하지 않습니다. 수동으로 액세스 할 수 있지만 예를 들어 알 수 있습니다. –

관련 문제