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.
我对 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.