Laravel 的助手在某些 contexts/classes 中无法正常工作

Laravel's Helpers doesn't works correctly in some contexts/classes

我对 Laravel 的助手(在我的例子中是路由助手)的使用有疑问。

在控制器中调用助手时,它工作正常。例如:

class PollController extends Controller {

    public function show(Request $request)
    {
        $route = route('polls.show'); 
        // returns 'http://application.app/polls/show'
        $data = [
            'user_token' => $request->get('token')
        ];

        return view('polls.form')->with($data);
    }

    public function save(Request $request)
    {
        dd($request->all());
    }
}

但是,当在 artisan tinker 或命令中调用相同的助手时 class。例如:

class Inspire extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'inspire';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Display an inspiring quote';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $route = route('polls.show'); // **returns 'http://localhost/polls/show'**
        $this->comment(PHP_EOL.Inspiring::quote().PHP_EOL);
    }
}

它(第二种情况)对我不利。我试图通过使用常量来保存正确的值然后在命令 class 上使用它来解决这个问题,但我遇到了同样的问题。

我希望解决这个问题,我想知道为什么在这些情况下行为不同。

提前致谢。

route() 帮助程序(以及 url() 和一些 Laravel 功能)使用当前 HTTP 请求中的域名。由于 Artisan 命令 没有 HTTP 请求,Laravel 回退到 app.url 配置设置。将它(或者,默认情况下,您的 .env APP_URL 设置)从默认 http://localhost 更改为您网站的 URL.