2016-02-13 6 views
1

В моей home.blade.php У меня есть код нижеLaravel 5,2 Route Error

<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' => '[email protected]' 
]); 

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

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

Почему я, имеющий эту ошибку для http://localhost:8000/

Маршрут [tasks.index] не определен. (Вид: D: \ wamp \ www \ test1 \ resources \ views \ pages \ home.blade.php)

ответ

3

Ошибка

Route [tasks.index] не определен. (Вид: D: \ WAMP \ WWW \ test1 \ ресурсы \ Views \ страницы \ 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' => '[email protected]' 
]); 

То же самое для tasks.create:

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

Было бы лучше, если вы используете группу для именования как (для V-5,1 и выше):

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

    Route::get('/index', [ 
     'as' => 'index', // Now you can usee 'tasks.index' 
     'uses' => '[email protected]' 
    ]); 

    Route::get('/create', [ 
     'as' => 'create', // Now you can usee 'tasks.create' 
     'uses' => '[email protected]' 
    ]); 
}); 
1

Ошибка в том, что Laravel не смог найти маршруты с именем tasks.index или tasks.create. Это связано с тем, что вы назвали свои маршруты index и create и home.

Так что если вы хотите, чтобы ссылка указывала на URL-адрес: /tasks, вам нужно будет ссылаться на этот маршрут, используя его имя.

ie: url будет 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> 
0

Как Альфа сказал, что лучше группировать маршруты.Также вы можете методы цепи как этот

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

    { 

    Route::get('/index', '[email protected]')->name(index); 

    Route::get('/create', '[email protected]')->name(create); 

    }); 

После определения маршрутов это было вы можете использовать функцию маршрута

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

Или, если вы предпочитаете не группировать маршруты, которые вы можете сделать так:

Route::get('/index', '[email protected]')->name(tasks.index); 

Route::get('/create', '[email protected]')->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