【发布时间】:2022-06-15 22:05:43
【问题描述】:
我有这个代码:
class TotersProviderLoginController extends Controller
{
private $oauthService;
public function __construct(Request $request)
{
$provider = $request->route()->parameter('provider'); // error here
if($provider == 'google')
$this->oauthService = new GoogleOauthService();
else
throw new \Exception('Provider '.($provider ?? '').' not supported!');
}
我定义了以下路线:
Route::get('login/toters/{provider}', 'Accounts\TotersProviderLoginController@redirectToProvider');
Route::get('login/toters/{provider}/redirect', 'Accounts\TotersProviderLoginController@handleProviderCallback');
Route::get('login/toters/{provider}/csrf', 'Accounts\TotersProviderLoginController@getCsrf');
Route::post('login/toters/{provider}/oauth', 'Accounts\TotersProviderLoginController@requestToken');
当我跑步时出于某种原因
php artisan route:list --verbose
我收到此错误
In TotersProviderLoginController.php line 38:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to a member function parameter() on null
所以很明显$request->route() 正在返回 null。这是为什么?
注意:我使用的是 Laravel 5.8
【问题讨论】:
-
会不会是使用artisan命令的时候没有request变量?
-
你能在控制器函数中尝试相同的逻辑而不是构造函数吗?