2011-03-16 6 views
0

사용자 컨트롤러에 대한 경로가 있습니다.KohanaPHP 3 라우팅 문제

Route::set('user', 'user/<action>') 
     ->defaults(array(
      'controller' => 'user', 
      'action'  => 'index', 
     )); 

나는 또한 사용자의 사진을 관리하는 데 사용되는 다양한 방법으로 사진 컨트롤러 (Controller_User_Pictures)가 : 나는 경로에서 수동으로 설정하지 않도록이 컨트롤러는 약 20 가지 방법이있다. 경로를 만들 때 :

Route::set('pictures', 'user/pictures/<action>') 
     ->defaults(array(
      'directory' => 'user', 
      'controller' => 'user_pictures', 
      'action'  => 'index', 
     )); 

작동하지 않습니다. Method action_pictures does not exist 그 라우터를 의미 사용자 컨트롤러에서 작업라는 사진을 찾고있다 : 그것은 오류가 반환하는 모든 경우에

Route::set('pictures', 'user/pictures/<action>') 
     ->defaults(array(
      'directory' => 'user', 
      'controller' => 'pictures', 
      'action'  => 'index', 
     )); 

: 나는 별도의 컨트롤러 (Controller_Pictures)를 생성하고 작동하지 않는 경로를 생성해도

물론 잘못된 것입니다.

제가 생각하고있는 유일한 해결책은 bootstrap.php 파일의 모든 경로를 정의하는 것입니다. 더 나은 해결책이 있습니까?

편집 두 번째 질문에 어떤 작업에서 (물론 라우팅에서) 밑줄을 하이픈으로 바꾸는 방법을 알고 있습니까?

답변

1

경로 순서가 중요합니다. 특정 경로가 우선되어야합니다.

그래서 user/pictures/<action> URL이 첫 번째 경로를 시작합니다. 일반 사용자 경로 위에 그림을 배치하면 잘 작동합니다.

또 다른 측면 참고 : 디렉토리 '사용자'를 지정하면, 컨트롤러가 그래, 당신 말이 맞아 classes/controller/user/pictures.php

+0

Controller_User_Pictures 될 것이다. 그리고 그것이 저를 잘못 생각하게 만든 작은 버그가 하나 있다고 생각한 것입니다. URL (사용자/그림 만)에 작업을 제공하지 않으면 작동하지 않습니다 (내 질문에서 오류 표시). 색인이나 다른 작업을 제공하면 작동합니다. 왜 그런 생각이 드나요? – Matti

+0

또한 내 질문을 확장하여 살펴볼 수 있다면 기뻐할 것입니다. – Matti

+0

경로의 작업이 선택 사항이 아니므로 URL 'user/pictures'이 작동하지 않습니다. 경로에서 약간의 변경이 필요합니다.''user/pictures (/ ) ''이 방법으로 경로의 액션 부분 (및 /의 앞 부분)은 선택 사항입니다. 당신의 밑줄/하이픈 - 것에 관해서는; 나는 확실히 모른다. 나는 적절한 해결책을 보지 못했고 그것을 직접 보지 못했습니다. 밑줄은 Kohana의 디렉토리 구분자로 번역됩니다. 그래서 그 정도는 사용하지 않는 것이 가장 좋습니다 (ab). – SpadXIII