Laravel路线未定义动作

时间:2015-08-17 07:26:17

标签: php laravel laravel-5 laravel-routing laravel-5.1

我在使用Laravel路线时遇到了麻烦。我试图在路由中的一些中间件之后重定向到控制器。但总有这个错误。

错误是:

  

UrlGenerator.php第558行中的InvalidArgumentException:操作   App \ Http \ Controllers \ DashboardController @ index未定义。

路线代码是:

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

那么问题是什么?什么是有效的路线行动?

3 个答案:

答案 0 :(得分:1)

这是评论而非帖子,但此时我无法发送。我不明白为什么你把参数(\Auth:user())传递给一个不需要它的方法(但是当你为View做这个时它是正确的。)

无论如何,我建议您使用中间件

public function handle($request, Closure $next)
{
    if (Auth::check()) {
        return redirect(...);
    } else {
        return redirect(...);
    } 
}

答案 1 :(得分:1)

这可能是更好的方法,从

更改
Route::get('/dashboard', ['middleware' => 'auth', function() {
  return Redirect::action('DashboardController@index', 
  array('user' =>      \Auth::user()));
}]);

Route::get('/', [
  'middleware' => 'auth',
  'uses' => 'DashboardController@index'
]);

答案 2 :(得分:0)

使用这条路线代替你的路线并将你的 Laravel 项目升级到 Laravel 8:

Route::middleware(['auth:sanctum', 'verified'])->group(function () {
    Route::get('/dashboard', 'DashboardController@index')->name('daskboard');
});