如何根据路线设置环境?

时间:2014-01-25 21:42:57

标签: laravel laravel-4

如果我正在浏览特定路径(domain.com/path1),我想拥有一个不同的环境,这是否可以在Laravel 4中使用,如果可以,怎么做?我知道$app->detectEnvironment()方法,但我不知道如何使用它。

1 个答案:

答案 0 :(得分:1)

这可以使用$app->detectEnvironment()方法(在/bootstrap/start.php中),但不是发送数组而是使用闭包。

$env = $app->detectEnvironment(function(){
    // get current http_host
    $baseurl = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : null;

    // our available environment
    $envs = [
        'foo' => ['foo.com', 'bar.foo.com'],
        'kex' => ['kex.foo.com']
    ];

    // default environment, you should not change this
    $environment = 'production';

    // search trough each available environment to see if it matched our http_host
    foreach($envs as $key => $env) {
        foreach ($env as $url) {
            if ($url == $baseurl) {
                $environment = $key;

                // match found, lets break our loop
                break 2;
            }
        }
    }

    // we create segments of /our/path so we can check if it matches your condition
    $segments = explode('/', isset($_SERVER['REQUEST_URI']) ? trim($_SERVER['REQUEST_URI']) : null);

    // check if the first (second) segment matches our /path
    if (isset($segments[1]) && $segments[1] == 'path')
        return $environment . '-route'; // append -route to our environment and return it

    return $environment;
});

第2行到第24行模仿Laravel的默认方法(使用数组)。你在下面的那个。