Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel访问web.php内的会话数据_Php_Laravel - Fatal编程技术网

Laravel访问web.php内的会话数据

Laravel访问web.php内的会话数据,php,laravel,Php,Laravel,由于客户的需要,我无法使用本地化前缀。我试图将区域设置数据存储到会话中,并根据该“区域设置”对路由进行分组。但是我无法访问web.php中的会话数据 $locale = Session::get('locale'); if($locale == 'tr') { Route::get('/kurumsal/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');

由于客户的需要,我无法使用本地化前缀。我试图将区域设置数据存储到会话中,并根据该“区域设置”对路由进行分组。但是我无法访问web.php中的会话数据

$locale = Session::get('locale');

    if($locale == 'tr') {
       Route::get('/kurumsal/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
    } elseif ($locale == 'eng){
       Route::get('/corporate/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
    }
语言控制器中间件

class LanguageController extends Controller
{
    public function index($locale = ''){
        if ($locale == '') {
            Session::put('locale', 'eng');
        } else {
            Session::put('locale', $locale);
        }
         return redirect()->back();
    }

}

对于从会话获取数据,您可以使用

$value = $request->session()->get('your-key-name');
但是我不确定它在Web.php中是否有效。。!!但你们可以在控制器、中间件等更多的地方使用它


有关更多详细信息,请参见

,以获取您可以使用的会话数据

$value = $request->session()->get('your-key-name');
但是我不确定它在Web.php中是否有效。。!!但你们可以在控制器、中间件等更多的地方使用它


有关详细信息,请参见

如果没有冲突,则无需有条件地设置路由

以下几点效果不错:

Route::get('/kurumsal/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
Route::get('/corporate/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
如果您想限制访问非本地化路由,则您确实需要会话访问,但您可以通过以下方式进行访问:

然后,您需要在
应用程序/Http/Kernel.php
中注册此区域设置:

// ...
protected $routeMiddleware = [
   // ...
   'locale_restricted' => LocaleRestricted::class
];

然后您可以将其用作:

$locale = Session::get('locale');

Route::middleware('locale_restricted:tr')->group(function () {
       Route::get('/kurumsal/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
});
Route::middleware('locale_restricted:eng')->group(function () {

       Route::get('/corporate/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
});


如果没有冲突,则不需要有条件地设置路由

以下几点效果不错:

Route::get('/kurumsal/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
Route::get('/corporate/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
如果您想限制访问非本地化路由,则您确实需要会话访问,但您可以通过以下方式进行访问:

然后,您需要在
应用程序/Http/Kernel.php
中注册此区域设置:

// ...
protected $routeMiddleware = [
   // ...
   'locale_restricted' => LocaleRestricted::class
];

然后您可以将其用作:

$locale = Session::get('locale');

Route::middleware('locale_restricted:tr')->group(function () {
       Route::get('/kurumsal/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
});
Route::middleware('locale_restricted:eng')->group(function () {

       Route::get('/corporate/{slug}', 'App\Http\Controllers\CorporateController@index')->name('corporate');
});


这比我想象的容易多了。顺便问一下,有没有办法根据我的路线设置语言环境?因为如果任何人只访问siteurl.com/corporate,他将看到土耳其语翻译,因为默认语言环境设置为“tr”。您可以在中间件中使用上述解决方案,但要执行
setLocale
,而不是执行
abort
(请注意,
$locale
是一个数组,因此您可能需要使用
$locale[0]??“默认区域设置值”
(其中默认区域设置值是您希望的默认值,以防您在未指定的情况下使用中间件)嗯,这比我想象的要容易得多。顺便问一下,有没有办法根据我的路线设置语言环境?因为如果任何人只访问siteurl.com/corporate,他会看到土耳其语翻译,因为默认语言环境设置为“tr”。您可以在中间件上使用上述解决方案,但不要执行
setLocale
,而是执行
abort
(请注意,
$locale
是一个数组,因此您可能需要使用
$locale[0]??“默认区域设置值”
(其中默认区域设置值是您希望的默认值,以防在未指定的情况下使用中间件)