2017-12-26 6 views
-1

나는 당신이 당신의 컨트롤러 here 그러나 이것은 잘못된 기본 컨트롤러로 '홈'과 AltoRouterAltoRouter - 매핑/라우팅 홈 클래스는 기본

의 기본 작업으로 '지수'를 설정하는 방법하지만 뭔가를 호출하는 방법을 일부 취득 like

$router->map('GET', '/', function($controller, $action) { 
    $controller = 'Home'; 
    $action = 'index'; 
}); 

답변

1

'기본 동작'의 의미에 조금 의존합니다.

$router = new AltoRouter(); 
$router->setBasePath('/example.com'); 
$router->map('GET','/', 'HomeController#index'); 
$match = $router->match(); 

if ($match === false) { 
    header($_SERVER["SERVER_PROTOCOL"].' 404 Not Found'); 
} else { 
    list($controller, $action) = explode('#', $match['target']); 
    if (is_callable([$controller, $action])) { 
     $obj = new $controller(); 
     call_user_func_array([$obj, $action], [$match['params']]); 
    } else { 
     // here your routes are wrong. 
     // Throw an exception in debug, send a 500 error in production 
    } 
} 

을 :

당신이 의미하는 경우

적용됩니다, 링크 된 github의 문제 (그리고 the AltoRouter website)의 다음 단순화 된 버전 "내가 어떻게 '/' 경로 내 HomeController 클래스에 index() 방법으로 이동해야합니까" #은 완전히 임의입니다. 컨트롤러 이름과 호출되는 메소드를 구분하는 데 사용되는 구분 기호입니다. 은 비슷한 종류의 라우터 - 컨트롤러 표기법 (예 : [email protected])에 @을 사용합니다.

당신이 "의심, 기본 작업으로 홈 페이지를 표시하는 경우"다음은 위의 상당히 비슷하게 의미하는 경우, 유일한 차이점은 404 경로가 간단 할 것 같습니다

if ($match === false) { 
    $obj = new HomeController(); 
    $obj->index(); 
} else { 
    // etc. 
} 
관련 문제