그래서 설치하고 Kohana를 실행하려고합니다. 나는 CakePHP를 조금 사용해 왔지만 일반적으로 프레임 워크와 새로운 것에 익숙하다. 첫 번째 PARAM 일명 $의 PARAM [0] 일명 $ 컨트롤러가 동일한 경우 내 데이터베이스에 연결하고 기본적으로보고 싶어 지금Kohana : 요청한 URL을 찾을 수 없습니다.
// GET PARAMS -- This basically splits domain.com/kohana/controller/action/param1/etc
// into: controller | action | param1 | etc
$requestURI = explode('/', $_SERVER['REQUEST_URI']);
$scriptName = explode('/',$_SERVER['SCRIPT_NAME']);
for($i= 0;$i < sizeof($scriptName);$i++){
if ($requestURI[$i] == $scriptName[$i]){
unset($requestURI[$i]);
}
}
$param = array_values($requestURI);
$controller = @ $param[0];
$action = @ $param[1];
$param1 = @ $param[2];
$param2 = @ $param[3];
$param3 = @ $param[4];
$param4 = @ $param[5];
$param5 = @ $param[6];
$param6 = @ $param[7];
:
은 어쨌든 ... 내 부트 스트랩 파일에 나는이 있습니다 나의 페이지 "카테고리"중 하나 (내 categories_pages 테이블에 해당). 그것이 카테고리라면, 나는 기본 "카테고리"컨트롤러를 사용하고 싶다. 컨트롤러는 $ param [0]이 무엇이든간에 있어야한다. 즉, domain.com/kohana/movies 또는 domain.com/kohana/games로 이동하면 범주 컨트롤러가 표시되고 domain.com/kohana/users는 사용자 컨트롤러가 표시됩니다.
$db = Database::instance();
$getiscategory = DB::select('*')->from('categories_pages')->where('directory', '=', $controller)->execute();
$is_category = $getiscategory->count();
if($is_category){
$controller = "categories";
}
$controller = (empty($controller)) ? 'index' : $controller;
$action = (empty($action)) ? 'index' : $action;
위 작업을 수행하고 싶었던 것. 내가 $ is_category를 되풀이하는 경우 범주 일치가있을 때 값 1이 반환되고 $ controller를 echo하면 "범주"가 컨트롤러로 설정되어있는 것을 볼 수 있습니다.
여기에 나는 그것이 라우팅 어디에 확실하지 않다, ... 불행하게도
Route::set(
'custom',
'(<controller>(/<action>(/<param1>)(/<param2>(/<param3>(/<param4>(/<param5>(/<param6>)))))))'
)->defaults(array(
'controller' => $controller,
'action' => $action,
'param1' => $param1,
'param2' => $param2,
'param3' => $param3,
'param4' => $param4,
'param5' => $param5,
'param6' => $param6,
));
실제 라우팅 방법에 대한 내 코드입니다. 내가 언급 한 $ 컨트롤러는 이전에 올바른 범주로 반환되지만 "HTTP_Exception_404 [404] : 요청 된 $ param [0] (영화 또는 게임 등) 오류 메시지가이 서버에서 발견되지 않았습니다."라는 오류 메시지가 나타납니다.
"categories"컨트롤러 클래스를 사용하기 때문에 범주와 일치하는 $ param [0]에 대한 컨트롤러 클래스가 없습니다. domain.com/kohana/categories로 가면 잘 작동합니다.
누구나 아이디어가 있거나 해결 방법을 알고 있습니까?
추가 # 1 내가 범주 컨트롤러를 호출하고 올바른 행동이라고하더라도, 그것은 여전히 표시 "쇼"컨트롤러를 필요로하는 것을 파악
. 나는 아주 기본적인 정보 (템플리트, 컨텐트 등)를 가진 쇼 컨트롤러를 추가하고 올바르게 보여 주었다. 지정된 컨트롤러를 표시하도록 라우팅 클래스에 해결 방법이 있습니까? 내가 말했듯이, 나는 컨트롤러에 어떤 컨트롤러가 있는지 알려주고 그것을 인식하지만 실제로 움직이지는 않습니다.
이 말을하는 것은 유감 스럽지만, 부트 스트랩의 코드에 완전히 동의했다고 생각합니다. 프레임 워크를 사용하는 이유는 이런 것들을 할 필요가 없기 때문입니다. 액션에서'$ this-> request-> param()'을 사용하여 모든 루트 세그먼트 (또는 params)를 얻을 수 있습니다. http://kohanaframework.org/3.2/guide/kohana/routing # 요청 매개 변수 라우팅에 대한 실제 문제는 문서 및 Lethargy의 답변을 참조하십시오. URI에 ''이없는 경로를 지정하고 defaults()에 기본 컨트롤러를 설정할 수 있습니다. –