关于 php:Laravel modal binding 给出 route not found 错误

Laravel modal binding gives route not found error

我正在使用 laravel 4.2 开发简单的粗略应用程序。这是我用于编辑/更新的控制器方法。

1
2
3
4
5
6
7
8
class ProductsController extends BaseController{

    public function getEdit($id){

       $product=Products::find($id);
       $this->layout->content=View::make('products.edit',compact('product'));  
   }
}

这是edit.blade.php文件的一部分

1
 {{ Form::model($product, ['route' => ['products/update', $product->id], 'method' => 'patch']) }}

我在 route.php 文件中为 ProductsController 定义路由如下

1
 Route::controller ( 'products', 'ProductsController');

当我尝试编辑产品时(http://localhost:8000/products/5/edit)

它说 Route [products/update] 未定义。

这是我的编辑链接

1
 id . '/edit') }}">Edit

这个错误的原因是什么?我在产品控制器上定义了 patchUpdate() 函数。


您使用的是路由控制器,而不是资源丰富的控制器 - 所以没有"命名"路由。

你可以这样做

1
{{ Form::model($product, ['action' => 'ProductsController@putEdit', $product->id], 'method' => 'patch']) }}


在你的 routes.php 文件中添加下面一行

1
2
Route::model('products', 'Product');
Route::resource('products', 'ProductsController');

并更改@The Shift Exchange 的建议

1
products.update not products/update

也改变

1
 id) }}">Edit