【问题标题】:Lumen base url is different in a Controller and a Job控制器和作业中的流明基础 url 不同
【发布时间】:2015-06-09 14:33:37
【问题描述】:

我有一个控制器,其中 URL::to('/') 返回我网站的基本 url。但是,当我在作业中使用 URL::to('/') 时,它只返回一个冒号作为字符串 (":")。

class MyJob extends Job {
    public function handle() {
        Log::info(URL::to('/'));
    }
}

这将返回"http://:"

class MyController extends Controller { {
    public function myMethod() {
        Log::info(URL::to('/'));
    }
}

这会返回"http://my_domain.com"

我无法理解这一点。我应该将基本 url 保存在 .env 中并使用它吗?

我将 beanstalkd 用于队列。

【问题讨论】:

    标签: php laravel lumen


    【解决方案1】:

    UrlGenerator 类自然会从 Requestinstance https://github.com/laravel/lumen-framework/blob/5.0/src/Routing/UrlGenerator.php#L289 获取基本 URL,当您在 CLI 环境中运行作业工作者时,该 URL 不存在。

    因此,要么将基本 url 存储在您的 .env 文件中,要么在您调度它时将其传递给您的作业。

    $app->get('/job', function() use ($app) {
        $app['Illuminate\Contracts\Bus\Dispatcher']->dispatch(new MyJob(url('/')));
    });
    

    MyJob.php

    class MyJob extends Job
    {
        private $base_url;
    
        public function __construct($base_url)
        {
            $this->base_url = $base_url;
        }
    
        public function handle()
        {
            app()['log']->info($this->base_url);
        }
    }
    

    【讨论】:

    • 谢谢彼得。我能够通过将 url 保存在 .env 中来解决它。但是,我真的不明白为什么函数返回 : 而不是抛出错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2018-02-02
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多