簡體   English   中英

Laravel 5.2路由錯誤

[英]Laravel 5.2 Route Error

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

錯誤

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

這是因為您將其命名為index而不是tasks.index ,所以可以在路由聲明中將名稱從index更改為task.index ,或者在href屬性中引用路由時使用index 現在您有了:

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

如果使用組進行命名(如V-5.1及更高版本)會更好:

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

該錯誤是因為Laravel無法找到任何名為tasks.indextasks.create路由。 這是因為您將路由命名為indexcreate home

因此,如果要鏈接指向URL: /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>

正如Alpha所說,最好對路線進行分組。 您也可以像這樣鏈接方法

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM