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