首页 > 解决方案 > Slim 3 重定向路由循环不起作用

问题描述

我正在尝试创建一个简单的路由来将端点重定向到基于数组/键的特定 URL。

$redirects = [
    "/ios" => $GLOBALS['config']['iosAppStoreLink'],
    "/android" => $GLOBALS['config']['androidAppStoreLink']
];

/**
 * Redirects
 */
foreach($redirects as $endpoint => $url) {
    $app->get($endpoint, function($request, $response) {
        return $response->withRedirect($url);
    });
}

一旦我进入函数内部,端点就会毫无问题地创建$app->get,它不允许我使用$url......我在控制台中收到Undefined Index错误。

我在这里做错了什么,为什么我无法访问该$url变量?

标签: phproutingslim

解决方案


要允许函数$url从它自己的范围之外访问,您可以使用function() use() {语法...

foreach($redirects as $endpoint => $url) {
    $app->get($endpoint, function($request, $response) use ($url) {
        return $response->withRedirect($url);
    });
}

推荐阅读