Laravel 路由动作未定义
Posted
技术标签:
【中文标题】Laravel 路由动作未定义【英文标题】:Laravel route Action not defined 【发布时间】:2015-11-09 18:18:53 【问题描述】:我在使用 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'
]);
那么问题是什么?什么是有效的路由操作?
【问题讨论】:
【参考方案1】:这是评论而不是帖子,但我目前无法发送。我不明白你为什么将参数 (\Auth:user()
) 传递给不需要它的方法(但是当你为 View
这样做时它是正确的)。
无论如何,我建议您使用中间件
public function handle($request, Closure $next)
if (Auth::check())
return redirect(...);
else
return redirect(...);
【讨论】:
糟糕。对此感到抱歉。当我询问时伪造代码时,这可能是一个错误。因为它实际上并没有运行,所以我删除了它。我会修改它。 不!我在回答中添加了更多内容。请检查一下。【参考方案2】:这可能是一个更好的方法,改变
Route::get('/dashboard', ['middleware' => 'auth', function()
return Redirect::action('DashboardController@index',
array('user' => \Auth::user()));
]);
到
Route::get('/', [
'middleware' => 'auth',
'uses' => 'DashboardController@index'
]);
【讨论】:
【参考方案3】:使用这条路线代替你的路线并将你的 Laravel 项目升级到 Laravel 8:
Route::middleware(['auth:sanctum', 'verified'])->group(function ()
Route::get('/dashboard', 'DashboardController@index')->name('daskboard');
);
【讨论】:
以上是关于Laravel 路由动作未定义的主要内容,如果未能解决你的问题,请参考以下文章