Lumen基本URL在Controller和Job中是不同的

时间:2015-06-09 14:33:38

标签: php laravel lumen

我有一个控制器,其中URL :: to(' /')返回我网站的基本网址。但是,当我在作业中使用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作为队列。

1 个答案:

答案 0 :(得分:0)

当然,UrlGenerator类会从Request实例http://crossroadsphotographicworkshops.com/blog/blog-post-the-first/中获取基本网址,当您在CLI环境中运行作业工作时,该实例不存在。

因此,要么将基本网址存储在.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);
    }
}