2015-02-07 17 views
3

我正在開發使用laraval 4.2的簡單原始應用程序。這是我編輯/更新的控制器方法。Laraval模式綁定給出路由未找到錯誤

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']) }} 

我定義爲ProductsController的路線在route.php文件

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

如下當我嘗試編輯產品(http://localhost:8000/products/5/edit

它說的是Route [products/update] no定義。

這是我的編輯鏈接

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

什麼是這個錯誤的原因是什麼?我已經在product contraller上定義了patchUpdate()函數。

回答

3

您正在使用路由控制器,而不是一個足智多謀的控制器 - 因此沒有'命名'路由。

你能做到這一點

{{ Form::model($product, ['action' => '[email protected]', $product->id], 'method' => 'patch']) }} 
+0

我試過products.update。但後來它說「控制器方法未找到」瀏覽器鏈接是http:// localhost:8000/products/3 /編輯 – user1688181 2015-02-07 09:42:41

+0

我更新了我的答案 – Laurence 2015-02-07 09:52:59

+0

是同意@TheShiftExchange使用模型路線如下所述或資源路徑 – 2015-02-07 10:01:57

1

添加以下行的routes.php文件文件

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

,改變什麼@The移交易所已建議

products.update not products/update 

變化也

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

仍然給出同樣的錯誤「Controller method not found」.is我的路由網址是否正確? http:// localhost:8000/products/2/edit – user1688181 2015-02-07 10:07:42

+0

剛編輯的答案。你有以上代碼routes.php文件 – 2015-02-07 10:09:38

+0

也改變Edit 2015-02-07 10:11:08