2013-10-10 105 views
2

我遇到一個錯誤:Laravel - 路由更新錯誤

Some mandatory parameters are missing ("users") to generate a URL for route "users.update". 

我有這一套對我的看法:

{{ Form::open(array('action' => array('[email protected]'))) }} 

     <div> {{ Form::label('username', 'Username:') }} 
      {{ Form::text('username', $user->username , array('class' => 'form-control')) }}</div> 

      <div> {{ Form::label('email', 'Email Address:') }} 
      {{ Form::text('email', $user->email , array('class' => 'form-control')) }}</div> 

      <div> {{ Form::label('new_password', 'New Password:') }} 
      {{ Form::text('new_password', '', array('class' => 'form-control')) }} </div> 

      <div> {{ Form::label('old_password', 'Old Password:') }} 
      {{ Form::text('password', '', array('class' => 'form-control')) }} </div> 

      {{ Form::submit() }} 


{{ Form::close() }} 

我也有一個功能,在我的控制器連接到更新:

public function update() { 
     return 'This is an update'; 
    } 

最後,當我檢查Artisan命令中可用的所有路線時,我發現該更新的路線爲:users/{users}

我的代碼有什麼問題?我試圖更新一個用戶,它會引發這個錯誤。

+1

您在表單的action屬性中缺少'{user}'參數。 __in simple terms__,你缺少'{{Form :: open(array('action'=> array('UsersController @ update')))}''中的第二個參數。它應該像'{{Form :: open(array('action'=> array('UsersController @ update',$ id)))}}'其中id是用戶的id。 – itachi

+0

是的。我剛剛發現,但仍然不能解決問題,因爲它是爲了更新。無需爲更新,存儲和刪除等操作設置這些變量。 – Bajongskie

+0

然後在routes.php – itachi

回答

0

您的路線以這樣的方式來期待一個變量$用戶傳遞定義。因爲:{users}

相反,你應該把它定義喜歡:

Route::post('users/update', '[email protected]'); 

,然後在功能更新()通過得到這個職位變量:

$users_data = Input::get(); 

OR

如果要保留參數,請通過傳遞附加參數重新定義表格:

{{ Form::open(array('action' => array('[email protected]', $id))) }} 
+0

中更改'users'的路線,'users/{users}'有什麼問題? – itachi

+1

謝謝。這解決了我的問題,但它是一個更新,所以我使用:Route :: put()來代替。 – Bajongskie

0

您打開FORM的方式,它需要一個路由參數。如果你不希望傳遞的參數,只需要使用以下內容:

{{ Form::open(array('action' => '[email protected]')) }} 

相反的:

{{ Form::open(array('action' => array('[email protected]'))) }} 
0

即使您正在設置操作,您仍然可能需要一個操作路線。我強烈建議您始終使用CLEARED DEFINED路線到您的控制器。看看Resource Controllers是否可以幫助你,以防萬一你不想定義每一條上帝的路線(我不)。

而且,最後回答你的問題:我覺得

{{ Form::open(array('action' => '[email protected]')) }} 

...可以解決你的問題。希望能幫助到你。對不起,我的英語不好! :D