在我的home.blade.php中,我有以下代码
<a href="{{ route('tasks.index') }}" class="btn btn-info">View Tasks</a>
<a href="{{ route('tasks.create') }}" class="btn btn-primary">Add New Task</a>
然后在routes.php中我有以下内容,
Route::get('/', [
'as' => 'home',
'uses' => 'PagesController@home'
]);
Route::get('/index', [
'as' => 'index',
'uses' => 'TasksController@index'
]);
Route::get('/create', [
'as' => 'create',
'uses' => 'TasksController@create'
]);
出现此错误
路由[tasks.index]未定义。 (查看:D:\ wamp \ www \ test1 \ resources \ views \ pages \ home.blade.php)
答案 0 :(得分:3)
错误
路由[tasks.index]未定义。 (视图: d:\瓦帕\ WWW \ TEST1 \资源\视图\页面\ home.blade.php)
这是因为您将其命名为index
而不是tasks.index
,因此要么在路由声明中将名称从index
更改为task.index
,要么在index
时使用href
引用Route::get('/index', [
'as' => 'index', // index is the name here so use the name as it is
'uses' => 'TasksController@index'
]);
属性中的路线。现在你有了这个:
tasks.create
Route::get('/create', [
'as' => 'create', // Name is "create" not "tasks.create"
'uses' => 'TasksController@create'
]);
相同:
Route::group(['as' => 'tasks.'], function () {
Route::get('/index', [
'as' => 'index', // Now you can usee 'tasks.index'
'uses' => 'TasksController@index'
]);
Route::get('/create', [
'as' => 'create', // Now you can usee 'tasks.create'
'uses' => 'TasksController@create'
]);
});
如果您使用组命名(如V-5.1及更高版本)会更好:
{{1}}
答案 1 :(得分:1)
错误是因为Laravel无法找到任何名为tasks.index
或tasks.create
的路线。这是因为您将路线命名为index
和create
以及home
。
因此,如果您希望链接指向网址:/tasks
,则必须使用其名称链接到该路线。
即:网址为route('index')
。
这取自路线:
正如您从routes.php
文件中看到的那样,'as'=>'index'
是路由的名称,这就是您应该调用的内容。
所以链接变成:
<a href="{{ route('index') }}" class="btn btn-info">View Tasks</a>
<a href="{{ route('create') }}" class="btn btn-info">CreateTasks</a>
答案 2 :(得分:0)
正如阿尔法所说,最好将路线分组。你也可以链接像这样的方法
Route::group(['as' => 'tasks.'], function ()
{
Route::get('/index', 'TasksController@index')->name(index);
Route::get('/create', 'TasksController@create')->name(create);
});
在定义路线后,您可以使用路线功能
{{ route('tasks.index') }}
{{ route('tasks.create') }}
或者,如果您不想对路线进行分组,可以这样做:
Route::get('/index', 'TasksController@index')->name(tasks.index);
Route::get('/create', 'TasksController@create')->name(tasks.create);
现在你可以使用:
<a href="{{ route('tasks.index') }}" class="btn btn-info">View Tasks</a>
<a href="{{ route('tasks.create') }}" class="btn btn-primary">Add New Task</a>
您可以在项目文件夹中查看您拥有此路径的路线及其名称:
php artisan route:list