我有这条路线
Route::group(['middleware' => 'returnphase'], function () {
Route::get('/', 'FrontendController@home')->name('homepage');
});
我的中间件检查什么阶段(逻辑现在不重要)是我的应用程序,我需要控制器设置一个全局变量,我可以在FrontendController内的所有方法中使用,因为我需要从数据库读取一些依赖的数据从那张支票:
中间件代码,我需要设置一个我可以在前端控制器中使用的phase_id varibale。
namespace Cbcc\Http\Middleware;
use Closure;
class ReturnPhaseMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
/**
* TODO: Phase id check logic
*/
// SETTING GLOBAL PHASE ID VARIABLE (EXAMPLE PHASE_ID = 1)
return $next($request);
}
}
我的前端控制器
//FrontEndController
namespace Cbcc\Http\Controllers;
use Cbcc\Page;
use Illuminate\Http\Request;
class FrontendController extends Controller
{
public function home()
{
$page = Page::where([
['phase_id',/**** I NEED GLOBAL PHASE ID HERE SETTING BY MIDDLEWARE***/],
['type','home']
])->get()[0];
return view('frontend.index',compact('page'));
}
}
有什么想法吗?
答案 0 :(得分:0)
您可能希望使用会话变量。那么使用flash会话变量怎么样,因为看起来你只使用这个变量一次:
<强>中间件强>
class ReturnPhaseMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
/**
* TODO: Phase id check logic
*/
$request->session()->flash('PHASE_ID', '1');
return $next($request);
}
}
前端控制器
class FrontendController extends Controller
{
public function home(Request $request)
{
$page = Page::where([
['phase_id', $request->session()->get('PHASE_Id')],
['type','home']
])->get()[0];
return view('frontend.index',compact('page'));
}
}
flash会话变量的特殊属性是它们在下一个请求时被销毁。
答案 1 :(得分:0)
良好的策略,没有使用会话?
您如何看待我的解决方案?
Dim A as integer
Dim B as integer
Dim C as integer
Dim D as integer
Dim E as integer
Dim F as integer
A=1
B=2
C=3
D=4
E=5
F=6
MaxValue = Application.Max(A,B,C,D,E,F)