У меня есть вопрос об использовании помощников 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());
}
}
Но при вызове одного и того же помощника в ремесленнике повозится или в командном классе. Например:
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);
}
}
Это (второй случай) не хорошо для меня. Я пытался решить эту проблему с помощью констант для сохранения правильного значения, а затем использовать его в классе команд, но у меня была та же проблема.
Я хочу решить эту проблему, и я хочу знать, почему поведение в этих случаях отличается.
Заранее спасибо.
route()
помощник (а также url()
и несколько битов функциональности Laravel) использует имя домена из текущего HTTP-запроса. Так как команды Artisan не иметь HTTP-запрос, Laravel возвращается к app.url
настройка конфигурации. Измените его (или, по умолчанию, ваш .env APP_URL
настройка) по умолчанию http://localhost
на URL вашего сайта.
Других решений пока нет …