Laravel 路线行动未定义
Laravel route Action not defined
我在使用 Laravel 路线时遇到问题。我试图在路由中的一些中间件之后重定向到控制器。但是总是出现这个错误。
错误是:
InvalidArgumentException in UrlGenerator.php line 558: Action
App\Http\Controllers\DashboardController@index not defined.
路线代码是:
Route::get('/dashboard', ['middleware' => 'auth', function() {
return Redirect::action('DashboardController@index', array('user' => \Auth::user()));
}]);
控制器:
class DashboardController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
return view('dashboard')->with('user', \Auth::user());
}
}
但上面的代码确实有效(所以我猜控制器确实有效):
Route::get('/testdashboard', [
'uses' => 'DashboardController@index'
]);
那么问题是什么?什么是有效的路由操作?
这与其说是评论,不如说是评论 post,但我现在无法发送。我不明白你为什么将参数 (\Auth:user()
) 传递给不需要它的方法(但是当你为 View
这样做时它是正确的)。
无论如何,我建议你在你的中间件上工作
public function handle($request, Closure $next)
{
if (Auth::check()) {
return redirect(...);
} else {
return redirect(...);
}
}
这可能是更好的方法,从
Route::get('/dashboard', ['middleware' => 'auth', function() {
return Redirect::action('DashboardController@index',
array('user' => \Auth::user()));
}]);
至
Route::get('/', [
'middleware' => 'auth',
'uses' => 'DashboardController@index'
]);
使用此路线代替您的路线并将您的 Laravel 项目升级到 Laravel 8:
Route::middleware(['auth:sanctum', 'verified'])->group(function () {
Route::get('/dashboard', 'DashboardController@index')->name('daskboard');
});
我在使用 Laravel 路线时遇到问题。我试图在路由中的一些中间件之后重定向到控制器。但是总是出现这个错误。
错误是:
InvalidArgumentException in UrlGenerator.php line 558: Action App\Http\Controllers\DashboardController@index not defined.
路线代码是:
Route::get('/dashboard', ['middleware' => 'auth', function() {
return Redirect::action('DashboardController@index', array('user' => \Auth::user()));
}]);
控制器:
class DashboardController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
return view('dashboard')->with('user', \Auth::user());
}
}
但上面的代码确实有效(所以我猜控制器确实有效):
Route::get('/testdashboard', [
'uses' => 'DashboardController@index'
]);
那么问题是什么?什么是有效的路由操作?
这与其说是评论,不如说是评论 post,但我现在无法发送。我不明白你为什么将参数 (\Auth:user()
) 传递给不需要它的方法(但是当你为 View
这样做时它是正确的)。
无论如何,我建议你在你的中间件上工作
public function handle($request, Closure $next)
{
if (Auth::check()) {
return redirect(...);
} else {
return redirect(...);
}
}
这可能是更好的方法,从
Route::get('/dashboard', ['middleware' => 'auth', function() {
return Redirect::action('DashboardController@index',
array('user' => \Auth::user()));
}]);
至
Route::get('/', [
'middleware' => 'auth',
'uses' => 'DashboardController@index'
]);
使用此路线代替您的路线并将您的 Laravel 项目升级到 Laravel 8:
Route::middleware(['auth:sanctum', 'verified'])->group(function () {
Route::get('/dashboard', 'DashboardController@index')->name('daskboard');
});