资源控制器在显示时返回“未找到”异常


Resource controller returns not found exception on show

在Laravel中,我有一条路线如下:

Route::resource('/admin/products/', 'ProductsController');

因此,如果我去myapp.app:8000/admin/products/我会得到所有产品:

public function index()
{
    $products = Product::all();
    return View::make('products.index', compact('products'));
}

但是,如果我去myapp.app:8000/admin/products/1那里,我有以下几点:

public function show($id)
{
    return "Hi!";
}

我收到一个错误页面:NotFoundHttpException。我做错了什么吗?

如果有帮助,我已经为相关查询附加了我的php artisan routes输出:

+--------+---------------------------------+-------------------------+-----------------------------------------+----------------+---------------+
| Domain | URI                             | Name                    | Action                                      | Before Filters | After Filters |
+--------+---------------------------------+-------------------------+-----------------------------------------+----------------+---------------+
|        | GET|HEAD admin/users/{month?}   |                         | AdminController@users                   | admin          |               |
|        | GET|HEAD admin/products         | admin.products..index   | ProductsController@index                | admin          |               |
|        | GET|HEAD admin/products/create  | admin.products..create  | ProductsController@create               | admin          |               |
|        | POST admin/products             | admin.products..store   | ProductsController@store                | admin          |               |
|        | GET|HEAD admin/products/{}      | admin.products..show    | ProductsController@show                 | admin          |               |
|        | GET|HEAD admin/products/{}/edit | admin.products..edit    | ProductsController@edit                 
|        | PUT admin/products/{}           | admin.products..update  | ProductsController@update               | admin          |               |
|        | PATCH admin/products/{}         |                         | ProductsController@update               | admin          |               |
|        | DELETE admin/products/{}        | admin.products..destroy | ProductsController@destroy              | admin          |               |

看起来这与 Laravel 如何解析路由有关。将您的路线更改为:

Route::resource('admin/products', 'ProductsController');

Artisan 的输出列表应该更改为这样的内容:

GET|HEAD admin/products/{products}