2017-12-26 21 views
-1

ように私はあなたのコントローラーhereが、これは間違っているデフォルトのコントローラとして「ホーム」とAltoRouterAltoRouter - マッピング/ルーティングホームクラスは、デフォルト

のデフォルトのアクションとして「インデックス」を設定する方法が、何かを呼び出す方法を一部取得しますlike

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

答えて

1

「デフォルト動作」の意味に少し依存します。

あなたは、リンクされgithubの問題(とthe AltoRouter website)の後、簡易版「どのように私は'/'ルートが私のHomeControllerクラスにindex()方法に行かせるか」を意味している場合は適用されます:

$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 
    } 
} 

#は完全に任意です。コントローラ名を呼び出すメソッドとコントローラ名を区切る区切り文字です。 は、同様の種類のルータからコントローラへの表記(すなわち、[email protected])には@を使用します。

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

あなたは「疑いで、デフォルトのアクションとして、ホームページを表示した場合」を意味している場合、それは上記にかなり似ています、唯一の違いは、404パスは単純になることだろう

関連する問題