2012-06-05 3 views
2

routes.php :CodeIgniter의 경로/I가에있는 방법

$route['ctrller1/method1/video/(:num)'] = 'ctrller2/method2/$1'; 

나는 또한 방법이있다 ctrller1라는 이름의 컨트롤러가 :

function method1 ($str = NULL) { 
    // do something 
} 

문제는 내가가 가지고있다 use controller2 coz 컨트롤러 1을 편집 할 수 없거나 편집 할 수 없습니다. 내가 원한 것은 겉으로보기에는 단순하지만 분명히 CI는 나와 함께 일하기를 원하지 않는다. URL을 때

는 :
domain.com/ctrller1/method1/edit
가 호출, 나는 domain.com/ctrller1/method1/videos/1
내가 전화 ctrller2의 방법을 원하는 불려 갔을 경우 ctrller1 내부의 방법은 호출하려는.

모두 나에게 맞는 것처럼 보이지만 작동하지 않습니다. 그래서 나는 뭔가를 놓치고 있어야합니다. 라우팅에 다음을 추가하려고 시도했습니다.

$route['ctrller1/method1/(edit)'] = 'ctrller1/method1/($1)'; 

하지만 아무 것도 없습니다. 아무도 여기서 뭐 잘못 보니?

답변

1

domain.com/ctrller1/method1/ 언제든지 방금 권한 (방화벽과 같은 경로로 작업 할 때, etc;) 순서가 중요합니다. 일반적으로이 순서대로 경로를 구성하려면 :

  1. 가 가장 정의 됨
  2. 일반/FALLBACK

명확히하기 정의

  • LESS, 즉 경로에 대한 주문은 다음과 같이해야 의미 :

    $route['ctrller1/method1/videos/view/(:num)'] = 'ctrller2/method3/$1'; 
    $route['ctrller1/method1/videos/(:num)'] = 'ctrller2/method2/$1'; 
    $route['ctrller1/(:num)'] = 'ctrller2/method1/$1'; 
    

    URL이 호출되면 경로 테이블은 가장 가까운 일치 항목 인 ELSE를 찾습니다. 그것은 다음 경로로 이동합니다.

    domain.com/ctrller1/method1/videos/1
    domain.com/ctrller1/method1/edit

    추론 : 당신이 원하는이 경우

    이 같은 것입니다 즉, 동영상의 경로가 더 구체적이며 장면 뒤에서 다른 컨트롤러로 연결하면 특수 사례입니다.여기

    당신의 경로는 다음과 같아야합니다 (테스트하지,하지만 그것을해야한다) 무엇을 : 측면, 참고로

    $route['ctrller1/method1/videos/(:num)'] = 'ctrller2/method2/$1'; 
    $route['ctrller1/method1/edit'] = 'ctrller1/method1'; 
    

    , 나는 당신이 ctrller1/method1/videos/ 아니라 뭔가 ctrller1/videos/view/12355 또는 같은 포맷 왜 궁금 ctrller1/videos/edit/12355, method1은 혼란스러워 보입니다. 그러나 다시 나는 여기에 모든 세부 사항을 가지고 있지 않다.

    희망 사항은 의견이 아니라면 알려 주시면 조금 더 명확히 해 주시면 질문을 다시 검토하겠습니다.

  • 0

    글쎄 video 한 곳에서 videos 다른 곳에서?

    $route['ctrller1/method1/videos/(:num)'] = 'ctrller2/method2/$1'; 
    

    에 어느 변경이나하는 URL을 시도 : 비디오/1

    +0

    Nah. 질문에만 오타가 있습니다. 내 코드를 확인했는데 모든 것이 순조롭게 진행된 것 같습니다. – rgin