57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Middleware;
|
||
|
||
use App\Services\SiteStateService;
|
||
use Closure;
|
||
|
||
/**
|
||
* 設定SiteStateService中的資料
|
||
*
|
||
* Class SetSiteStates
|
||
* @package App\Http\Middleware
|
||
*/
|
||
class SetSiteStates
|
||
{
|
||
/**
|
||
* Handle an incoming request.
|
||
*
|
||
* @param \Illuminate\Http\Request $request
|
||
* @param \Closure $next
|
||
* @return mixed
|
||
*/
|
||
public function handle($request, Closure $next)
|
||
{
|
||
$siteState = app(SiteStateService::class);
|
||
//是否網站後台,判斷route prefix
|
||
if($request->is(config('admin.route') . '/*')) {
|
||
$siteState->isAdminArea = true;
|
||
}
|
||
|
||
//所有可用語系及其原文名稱
|
||
$siteState->languagesWithLabel = config('languages');
|
||
|
||
//所有可用語系
|
||
$siteState->languages = array_keys($siteState->languagesWithLabel);
|
||
|
||
//所有其他可用語系,排除現在語系
|
||
$siteState->otherLanguages = collect($siteState->languages)->filter(function($locale){
|
||
return $locale !== app()->getLocale();
|
||
})->all();
|
||
|
||
//所有語系的當前語言翻譯
|
||
foreach ($siteState->languages as $locale) {
|
||
$siteState->languageTranslations[$locale] = trans('languages.' . $locale);
|
||
}
|
||
|
||
//預設語系
|
||
$siteState->defaultLanguage = config('app.fallback_locale');
|
||
|
||
//設定預設的meta tag
|
||
$siteState->htmlMeta['description'] = app('Option')->site_description;
|
||
$siteState->htmlMeta['og:type'] = 'website';
|
||
|
||
return $next($request);
|
||
}
|
||
}
|