将路由文件中的指定参数传递给laravel中的控制器 [英] Passing specified parameters in route file to the controller in laravel
本文介绍了将路由文件中的指定参数传递给laravel中的控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在laravel路由文件中,我这样写:
In laravel routes file I have written this :
Route::get('/{lang}/{page}', 'PagesController@get' )->where('lang' , $langPattern );
在页面控制器中,我这样写:
and in pages controller I wrote this :
public function get($lang,$page)
{
// do something
}
但是我只想使用页面参数
But I want only to use page parameter
我创建了一个中间件来选择语言,并且控制器中不需要$ lang
I created a middleware to select language and there is no need for $lang in controllers
如何删除它?
我可以这样写吗:
public function get($page)
{
// do something
}
我的语言中间件:
public function handle($request, Closure $next )
{
// URL language
$urllang = $request->segment(1);
if ($request->session()->has("lang")){
$sessionLang = $request->session()->get('lang');
// if requested url hasn't language
if ($urllang == NULL) {
$urllang = $sessionLang;
return redirect('/' . $sessionLang);
}
// if user change the language
elseif ($urllang != NULL && $urllang != $sessionLang) {
$request->session()->put('lang' , $urllang);
}
}
else{
// if there is no session lang and no url lang
// get app main lang from config file
// Put session and redirect
if ($urllang == NULL) {
$request->session()->put('lang' , config('app.locale'));
return redirect('/' . config('app.locale'));
}
// if there is no session
// Only put session
else{
$request->session()->put('lang' , $urllang);
}
}
// get requested language id from database
$lang = Lang::select("id" , "short" , "name" , "title" , "keywords" , "description" , "copyrights" , "site_name")->where( ['short' => $urllang , 'active' => 1 ])->first();
// if requested language is not exist
if (!$lang) {
$request->session()->put('lang' , config('app.locale'));
abort(404);
}else{
Lang::set($lang);
return $next($request);
}
}
谢谢.
推荐答案
最后,我找到了最佳解决方案 只是我在此行中添加了语言中间件
Finally i found the best solution Just i added to my language middleware this line
$request->route()->forgetParameter('lang');
我要求它从请求变量中删除lang参数.
I asked it to remove lang parameter from request variable .
希望能为您提供帮助.
这篇关于将路由文件中的指定参数传递给laravel中的控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文