在laravel站点上,在作业句柄内部发出Http Post请求,我需要传递locale参数。并且此locale必须在控制器中使用。
我使用的是astrotomic/laravel-可翻译的,定义在config/translatable.php中,默认值为'en':
'locales' => [
'en',
'fr',
...
'locale' => null,
...
我的BannersCRUD测试作业
<?php
namespace App\Jobs;
class BannersCRUDTest implements ShouldQueue
{
public function handle()
{
$currentLocale = 'fr'; // I path French
App::setLocale($currentLocale);
session()->put('locale', $currentLocale); // That does not work...
$response = Http::post(route('banners.filter' ));
但是使用getLocale方法签入相关Controller时,我看到了英语
class BannerController extends Controller
{
public function filter(): array
{
\Log::info(' -1 BannerController app()->getLocale()::'); // I see 'en' value
\Log::info(app()->getLocale();
...
我如何将区域设置从作业传递到控制器?我更喜欢使用App::setLocale,而不是作为请求URL中的参数...
"laravel/framework": "^9.19",
"guzzlehttp/guzzle": "^7.2",
"astrotomic/laravel-translatable": "^11.11",
"mxl/laravel-job": "^1.3",
先谢了!
1条答案
按热度按时间1dkrff031#
使用作业(BannersCRUDTest)将语言环境从“en”设置为“fr”
您的此作业已设置为排队。