Laravel模型绑定出现路径未找到错误。

3

我正在使用Laravel 4.2开发简单的粗糙应用程序。以下是我的编辑/更新控制器方法:

class ProductsController extends BaseController{

    public function getEdit($id){

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

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

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

我在route.php文件中定义了ProductsController的路由,如下所示:

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

当我尝试编辑产品(http://localhost:8000/products/5/edit)时,它会显示路由[products/update]未定义。

这是我的编辑链接。

 <a class="btn btn-small btn-info" href="{{ URL::to('products/' . $product->id . '/edit') }}">Edit </a>

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

3

您正在使用路由控制器,而不是资源控制器-因此没有“命名”路由。

您可以这样做

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

我尝试使用products.update,但它显示“找不到控制器方法”,浏览器链接是http://localhost:8000/products/3/edit。 - user1688181
同意 @TheShiftExchange 的建议,可以使用如下所述的模型路由或资源路由。 - kamlesh.bar
仍然出现相同的错误:“找不到控制器方法”。我的路由URL正确吗?http://localhost:8000/products/2/edit - user1688181

1
在你的 routes.php 文件中添加以下行:
Route::model('products', 'Product');
Route::resource('products', 'ProductsController');

并且更改 @The Shift Exchange 建议的内容

products.update not products/update

改变也是

 <a class="btn btn-small btn-info" href="{{ URL::to('products/getEdit/'. $product->id) }}">Edit </a>

仍然出现相同的错误:“找不到控制器方法”。我的路由URL正确吗?http://localhost:8000/products/2/edit - user1688181
刚刚编辑了回答。你是否将上述代码放置在routes.php文件中? - kamlesh.bar
同时更改 <a class="btn btn-small btn-info" href="{{ URL::to('products/edit/'. $product->id) </a>">编辑}}。 - kamlesh.bar
已更改所有提到的内容,但它仍然无法正常工作。 - user1688181
你创建了我和TheShiftExchange建议的edit或putEdit方法吗?在这个方法中,你可以放置你的更新代码。 - kamlesh.bar
如果您想重定向到相同的方法,请将编辑更改为getEdit('products / getEdit /'。$ product-> id) - kamlesh.bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接