Php 仅当某个条件为真时,如何启用某个路由访问? 目标

Php 仅当某个条件为真时,如何启用某个路由访问? 目标,php,laravel,laravel-5,laravel-routing,Php,Laravel,Laravel 5,Laravel Routing,我试图根据我的.env文件的标志阻止我的主登录页。 我不确定这是否是正确的方法 台阶 在我的.env中,我添加了 LOGIN\u PAGE=true 然后在我的路线文件中 我加上,如果检查 if(env('LANDING_PAGE') == true){ Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']); Route::post('/', 'AuthController@po

我试图根据我的
.env
文件的标志阻止我的主登录页。 我不确定这是否是正确的方法


台阶 在我的
.env
中,我添加了

LOGIN\u PAGE=true

然后在我的路线文件中

我加上,如果检查

if(env('LANDING_PAGE') == true){

    Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']);
    Route::post('/', 'AuthController@postSignIn');
}
if(env('LANDING_PAGE') == true){

    Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']);
    Route::post('/', 'AuthController@postSignIn');
}

结果
LOGIN\u PAGE=fasle

我去我的登录页面,我得到404页没有找到这是好的

LOGIN\u PAGE=true

我去我的登录页面,我仍然得到404页没有找到这是不好的。我应该看到我的登录页面

我忘了什么?一个人怎样才能继续前进和进球

我试图根据我的
.env
文件的标志阻止我的主登录页。 我不确定这是否是正确的方法


台阶 在我的
.env
中,我添加了

LOGIN\u PAGE=true

然后在我的路线文件中

我加上,如果检查

if(env('LANDING_PAGE') == true){

    Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']);
    Route::post('/', 'AuthController@postSignIn');
}
if(env('LANDING_PAGE') == true){

    Route::get('/',['as' => 'login', 'uses'=>'AuthController@getSignIn']);
    Route::post('/', 'AuthController@postSignIn');
}

结果
LOGIN\u PAGE=fasle

我去我的登录页面,我得到404页没有找到这是好的

LOGIN\u PAGE=true

我去我的登录页面,我仍然得到404页没有找到这是不好的。我应该看到我的登录页面


只有当某个条件为真时,如何才能启用某个路由访问?

您所要求的最佳实践是定义一个中间件,该中间件可以在需要时随时随地重用:

php artisan make:middleware CheckIsLandingPage
然后定义中间件的逻辑

<?php

namespace App\Http\Middleware;

use Closure;

class CheckIsLAndingPage
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // your logic here 
        if (env('LANDING_PAGE') == true) {
           return redirect('somewhere');
        }

        return $next($request);
    }
}

您所要求的最佳实践是定义一个中间件,该中间件可以在需要时随时随地重用:

php artisan make:middleware CheckIsLandingPage
然后定义中间件的逻辑

<?php

namespace App\Http\Middleware;

use Closure;

class CheckIsLAndingPage
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // your logic here 
        if (env('LANDING_PAGE') == true) {
           return redirect('somewhere');
        }

        return $next($request);
    }
}

在.env中,您有名为LOGIN\u页面的设置,但在路由中您正在检查LANDING\u页面。在.env中,您有名为LOGIN\u页面的设置,但在路由中您正在检查LANDING\u页面。我使用的是laravel 5.1。我还将我的帖子标记为
5.1
——请更新你的答案,使之与此相关。他链接到了5.5文档,但你在5.1中也会这样做。不要在配置文件以外的任何地方使用env。它不能正常工作。在配置中使用env,然后在需要使用laravel 5.1的地方使用config。我还将我的帖子标记为
5.1
——请更新你的答案,使之与此相关。他链接到了5.5文档,但你在5.1中也会这样做。不要在配置文件以外的任何地方使用env。它不能正常工作。在config中使用env,然后在任何需要的地方使用config