laravel 如何将区域设置参数从作业传递到控制器?

k4ymrczo  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(114)

在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",

先谢了!

1dkrff03

1dkrff031#

使用作业(BannersCRUDTest)将语言环境从“en”设置为“fr”
您的此作业已设置为排队。

  • 确保您已正确呼叫/派遣此工作。
  • 并且还要确保队列进程正确运行。

相关问题