0

我有一个控制器,其中 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"

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

我正在使用 beanstalkd 进行队列。

4

1 回答 1

0

自然UrlGenerator,类会从Request实例https://github.com/laravel/lumen-framework/blob/5.0/src/Routing/UrlGenerator.php#L289中获取基本 URL,当您在CLI 环境。

因此,要么将基本 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);
    }
}
于 2015-06-09T18:22:46.690 回答