Справочная информация. Я хочу использовать один и тот же код для нескольких шаблонных веб-сайтов.Я хочу, чтобы код идентифицировал домен, к которому осуществляется доступ, и затем смог установить глобальные переменные, которые будут использоваться в приложении.
Сначала я создал \ config \ global.php, и там его логика работала какОжидается:
$webUrl = url()->current();
/**************************************************
* Set Conference name based on URL
**************************************************/
$confId = 0;
$confName = '';
$confAbbrev = '';
if(strpos($webUrl, 'webdomain1') > 0) {
$confName = 'Domain 1 Full Name';
$confAbbrev = 'Dom1';
$confId = 25;
}
elseif(strpos($webUrl, 'webdomain2') >0) {
$confName = 'Domain 2 Full Name';
$confAbbrev = 'Dom2';
$confId = 35;
}
Однако в конечном итоге я обнаружил, что «url ()» вызывал ошибки, которые не позволяли мне использовать команды «php artisan» во всем приложении.Посоветовавшись с моим профессиональным коллегой по веб-разработке, он сказал, что использование «глобального» конфигурационного файла для глобальных переменных не является лучшей практикой, и вместо этого рекомендовал Middleware.Он взял под свой контроль мой ноутбук и пошел очень быстро ...
В \ app \ Http \ Kernel.php он добавил строку SetDomainVariables в конце $ middlewareGroups:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\SetDomainVariables::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
Затем он создал новый файл: \ app \ Http \ Middleware \ SetDomainVariables.php
<?php
namespace App\Http\Middleware;
use Closure;
class SetDomainVariables
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
dd($request->getHttpHost());
return $next($request);
}
}
Результаты "$ request-> getHttpHost ()" - это то, что мне нужно ... он возвращает "foo"www.foo.com.Тем не менее, я не знаю, как присвоить это значение переменной и вернуть его через «$ next», а затем как я могу разместить вокруг нее логику, чтобы установить свои глобальные переменные, на которые я могу ссылаться в партиале Blade, и т. Д.
Спасибо!
РЕДАКТИРОВАТЬ: Если использование \ config \ global.php действительно правильный способ выполнить то, что я хочу, могу ли я просто закомментировать строку "url ()", когда захочусделать команду "php artisan"?