Laravel 5.2路由错误

In my home.blade.php I have the below code

<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>

then in the routes.php I have the following,

Route::get('/', [
    'as' => 'home',
    'uses' => 'PagesController@home'
]);

Route::get('/index', [
    'as' => 'index',
    'uses' => 'TasksController@index'
]);

Route::get('/create', [
    'as' => 'create',
    'uses' => 'TasksController@create'
]);

Why am I having this error for http://localhost:8000/

Route [tasks.index] not defined. (View: D:\wamp\www\test1esources\views\pages\home.blade.php)

The error

Route [tasks.index] not defined. (View: D:\wamp\www\test1esources\views\pages\home.blade.php)

It's because you've named it index not tasks.index, so either change the name from index to task.index in route declaration or use index when referencing the route in your href attribute. Now you have this:

Route::get('/index', [
    'as' => 'index', // index is the name here so use the name as it is
    'uses' => 'TasksController@index'
]);

Same for tasks.create:

Route::get('/create', [
    'as' => 'create', // Name is "create" not "tasks.create"
    'uses' => 'TasksController@create'
]);

It would be better if you use a group for naming like (For V-5.1 and greater):

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

The error is because Laravel couldn't find any routes named tasks.index or tasks.create. This is because you named your routes as index and create and home.

So if you want a link to point to the URL: /tasks, you have to link to that route using it's name.

ie: the url will be route('index'). This is taken from the route:

As you can see from the routes.php file, 'as'=>'index' is the name of the route and this is what you should call.

So the link become:

<a href="{{ route('index') }}" class="btn btn-info">View Tasks</a>
<a href="{{ route('create') }}" class="btn btn-info">CreateTasks</a>

As The Alpha said it's better to group the routes. Also you can chain methods like this

    Route::group(['as' => 'tasks.'], function () 

    {

    Route::get('/index', 'TasksController@index')->name(index);

    Route::get('/create', 'TasksController@create')->name(create);

    });

After defining the routes this was you can use route function

{{ route('tasks.index') }}
{{ route('tasks.create') }}

Or if you prefer not to group the routes you can do like this:

Route::get('/index', 'TasksController@index')->name(tasks.index);

Route::get('/create', 'TasksController@create')->name(tasks.create);

Now you can use :

<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>

You can see what routes you have and their names running this command in the project folder:

php artisan route:list