App :: setLocale () предназначена для языковых целей.
Не используйте промежуточное программное обеспечение для установки значения сеанса по умолчанию.Это будет раздувать ваш файл маршрута.Используйте view composer для вывода.https://laravel.com/docs/4.2/responses#view-composers
Запустите эту команду, если у вас нет провайдера компоновщика представления:
php artisan make:provider ComposerServiceProvider
В "app / Providers / ComposerServiceProvider.php", в методе "boot ()"
public function boot()
{
View::composer(array('header','footer'), function($view)
{
if (!currentCurrency()) {
setCurrency(config('app.currency'));
}
$view->with('currencies', config('currencies');
});
}
Определить некоторые вспомогательные функции.Чтобы загрузить помощник, используйте функцию автозагрузки композитора.В «composer.json» в атрибуте «autoload» тесно, после «psr-4»: он загрузит «app / Support / helpers.php» в качестве примера.
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Support/helpers.php"
]
После изменения«composer.json», создайте файл автозагрузки с помощью команды:
composer dump-autoload
В «app / Support / helpers.php» (создайте его) добавьте следующие функции:
<?php
if (!function_exists('currentCurrency')) {
/**
* @return string
*/
function currentCurrency(){
if (Session::has('appcurrency') AND array_key_exists(Session::get('appcurrency'), config('currencies'))) {
return Session::get('appcurrency');
}
return '';
}
}
if (!function_exists('setCurrency')) {
/**
* @param string $currency
* @return void
* @throws \Exception
*/
function setCurrency($currency){
if (array_key_exists($currency, config('currencies'))) {
Session::set('appcurrency', $currency);
} else {
throw new \Exception('not a valid currency');
}
}
}
Если вам нужно установить локаль в одну из валют, измените метод setCurrency, поскольку вам нужно установить локаль только один раз за сеанс.
/**
* @param string $currency
* @return void
* @throws \Exception
*/
function setCurrency($currency){
if (array_key_exists($currency, config('currencies'))) {
Session::set('appcurrency', $currency);
App::setLocale($currency);
} else {
throw new \Exception('not a valid currency');
}
}