【问题标题】:Laravel route() not working properlyLaravel 路由()无法正常工作
【发布时间】:2018-01-17 16:31:05
【问题描述】:

我正在创建一个 cms 类型的应用程序,它只注册用户并且用户可以在其中创建帖子。问题出在route()。在刀片 html 的超链接中定义 route() 时,它不起作用。

路线:

Route::resource('/admin/users', 'AdminUsersController');

HTML 刀片:

        <ul class="nav nav-second-level">
            <li>
                <a href="{{route('admin.users.index')}}">All Users</a>
            </li>

            <li>
                <a href="{{route('admin.users.create')}}">Create User</a>
            </li>

        </ul>

文件夹架构:

resources/views/admin/users/create.blade.php 资源/视图/管理员/用户/index.blade.php

它不工作。上面写着Route [admin.users.index] not defined. (View: C:\wamp64\www\codehacking\resources\views\layouts\admin.blade.php) (View: C:\wamp64\www\codehacking\resources\views\layouts\admin.blade.php)

请帮我解决这个问题。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这是意料之中的。如果您希望路由名称为 admin.user.*,您需要将您的 Route 更改为:

    Route::resource('/admin/users', 'AdminUsersController', ['as' => 'admin']);
    

    这会将 admin. 前缀到路由名称。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      对于你的情况,像这样使用它:

      Route::resource('/admin/users', 'AdminUsersController', ['as' => 'admin']);
      

      **************** ------ *******************

      当访问一个路由时,Laravel 会从上到下遍历你的路由列表,直到找到一个“匹配”的路由,然后立即选择该路由。

      在您的示例中,当尝试使用 GET 访问 /blog/bin 时,它有两个潜在的匹配项:

      Route::get('/blog/{id}', 'BlogController@show');
      

      Route::get('/blog/bin', 'BlogController@bin');
      

      在这种情况下,Route::get('/blog/{id}', 'BlogController@show');首先出现,所以它会被选中。

      正如前面的答案正确指出的那样,将 /blog/bin 路由放在 /blog/{id} 路由上方可以解决问题。然而,这个“解决方案”让您在未来面临类似的错误(例如,定义 /blog/example 路由并意外地将其放在 /blog/{id} 下)。另外,我个人认为让路由的功能依赖于放置它们的顺序并不是很优雅。

      在我看来,如果可能,更稳健的解决方案是使用正则表达式约束来限制 /blog/{id} 接受的可能值。

      例如,如果您在博客文章中使用数字 ID,则您知道如果 id 是数字,您只想使用路由 /blog/{id}。因此,您可以按如下方式定义您的路线:

      Route::get('/blog/{id}', 'BlogController@show')->where('id', '[0-9]+');
      

      当然,这通常是不可能的,例如,如果您使用帖子标题作为 id,但如果有某种方法可以将帖子 id 与任何其他 /blog/foo 路由区分开来,那么这将是可能的.

      或者为了更好地理解你必须遵循这个网址:

      https://laravel.com/docs/5.4/routing
      

      【讨论】:

        猜你喜欢
        • 2017-10-15
        • 2016-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-23
        • 2014-09-30
        相关资源
        最近更新 更多