我想為一個控制器使用一個路由,但使用不同的操作。我想通過會話中的當前值來切換控制器的動作,但不要更改路由(瀏覽器中的當前 url)。我試過這個代碼:$token = session('stravaAccessToken');$athlete = session('stravaAthlete');$stats = session('stravaStats');if (empty($token) || empty($athlete) || empty($stats)) { Route::get('/', 'StravaController@login');} else { Route::get('/', 'StravaController@index');}但是,返回的會話值始終為空(可能是值被緩存了??。┪蚁胧褂孟旅娴拇a,但沒有根據需要工作......我也有會話值,但是,我不明白,我需要從回調函數返回什么?Route::get('/', function(){ $token = session('stravaAccessToken'); $athlete = session('stravaAthlete'); $stats = session('stravaStats'); if (empty($token) || empty($athlete) || empty($stats)) { Route::get('/', 'StravaController@login'); } else { Route::get('/', 'StravaController@index'); }});php 7.1,laravel 5.8對于第一個代碼變體:始終打開一個操作“StravaController@login”,對于第二個代碼變體:打開空白頁面我想期待一個動作“StravaController@index”(會話值不為空)或一個動作“StravaController@login”(如果會話值為空)
1 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
將所有內容發送到一個函數:
Route::get('/', 'StravaController@handle');
并讓該函數相應地調用login/index函數:
public function handle() {
$token = session('stravaAccessToken');
$athlete = session('stravaAthlete');
$stats = session('stravaStats');
if (empty($token) || empty($athlete) || empty($stats)) {
return $this->login();
} else {
return $this->index();
}
}
另一種選擇是將登錄頁面放在不同的路由上,如果“登錄”數據不存在,則讓中間件重定向到它。
- 1 回答
- 0 關注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消