AltoRouter - 默认情况下映射/路由主类

时间:2017-12-26 14:00:49

标签: php model-view-controller routing altorouter

我得到了如何调用您的控制器here,但如何将“Home”设置为默认控制器,将“index”设置为AltoRouter

中的默认操作

这是错误的,但类似

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

1 个答案:

答案 0 :(得分:1)

取决于“默认操作”的含义。

如果您的意思是“我如何使'/'路由转到我的index()类上的HomeController方法”,那么链接的github问题的简化版本(和{{ 3}})适用:

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

#这里完全是任意的,它只是一个分隔符,用于将控制器名称与被调用的方法分开。 the AltoRouter website使用@作为类似的路由器到控制器表示法(即HomeController@index)。

如果您的意思是“如果有疑问,将主页显示为默认操作”,那么它看起来与上面的相似,唯一的区别是404路径只是:

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