Laravel 5.2路由错误

时间:2016-02-13 04:25:58

标签: php laravel laravel-5

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

为什么http://localhost:8000/

出现此错误

路由[tasks.index]未定义。 (查看:D:\ wamp \ www \ test1 \ resources \ views \ pages \ home.blade.php)

3 个答案:

答案 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.indextasks.create的路线。这是因为您将路线命名为indexcreate以及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