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');
});