我在使用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'
]);
那么问题是什么?什么是有效的路线行动?
答案 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');
});