我有這個代碼:
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
uj5u.com熱心網友回復:
正如你在問題中提到的那樣,我已經除錯了自己,我找到了你得到錯誤的方式。
當您運行php artisan route:list --verbose命令時,它將除錯所有路由并呼叫每個路由的控制器方法。
在你的情況下,當你運行命令時會發生什么verbose,路由沒有provider默認值,這就是為什么它總是給出空值。
當您通過郵遞員或網路呼叫路由時,它肯定會起作用,因為那時您總是對provider.
謝謝:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494314.html
上一篇:如何在laravel中傳遞一個資料視圖和其他視圖頁面
下一篇:這不會又是一個Go的BUG吧?
