Laravel - 糟糕,没有可用的页面

Laravel - Oops no page available

我在 Laravel 中有一个项目,我有一个包含 link 的页面。

<ul class="nav nav-second-level">
    <li>
        <a href="{{route('admin.posts.index')}}">All Posts</a>
    </li>
    <li>
        <a href="{{route('admin.posts.create')}}">Create Post</a>
    </li>
    <li>
        <a href="{{route('admin.comments.index')}}">All Comments</a>
    </li>
</ul>

我遇到的问题是,当我点击 link:

<a href="{{route('admin.posts.create')}}">Create Post</a>

我收到错误:

Oops no page found

这些是我的路线:

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

    Route::get('/admin', function(){
        return view('admin.index');
    });

    Route::get('/admin/posts/{slug}', 'AdminPostsController@post')->name('posts.post');

    Route::resource('admin/users', 'AdminUsersController');
    Route::resource('admin/posts', 'AdminPostsController');
    Route::resource('admin/categories', 'AdminCategoriesController');
    Route::resource('admin/media', 'AdminMediasController');
    Route::resource('admin/comments', 'PostCommentsController');
    Route::resource('admin/comment/replies', 'CommentRepliesController');

});

admin.posts.create 路由的计算结果为 admin/posts/create。然而,问题是这个路由定义:

Route::get('/admin/posts/{slug}', 'AdminPostsController@post')->name('posts.post');

因为此路由是在您的 admin/posts 资源路由之前定义的,所以 admin/posts/create 将不会匹配 create 资源操作,而是匹配 post 操作,其中{slug} 计算为 "create"。我猜 "Oops no page found" 消息是您自己的错误消息,因为您的 post 操作不希望处理 "create" slug。

我相信将该路由定义移动到您的资源路由定义之后(或者,至少在 admin/posts 资源定义之后)应该可以解决您的问题。