0

我得到這個錯誤:UrlGenerationException:缺少必需的參數[路線:topics.update] [URI:主題/ {}話題]

Missing required parameters for [Route: topics.update] [URI: topics/{topic}]. (View: C:\xampp\htdocs\phpboards\resources\views\topics\edit.blade.php) 

這是鏈接,將採取用戶編輯:

<a href="/boards/topics/edit/{{$topic->id}}" class="btn btn-default">Edit</a> 

這是編輯控制器:

$topic = Topic::find($id); 
return view('topics.edit')->with('topic', $topic); 

這是路線:

Route::get('/boards/topics/edit/{id}', '[email protected]'); 

這是編輯的形式:

<div class="container"> 
    {!! Form::open(['action' => '[email protected]', 'method' => 'POST']) !!} 
     <div class="form-group"> 
      {{ Form::label('title', 'Title') }} 
      {{ Form::text('title', $topic->topic_title, ['class' => 'form-control', 'placeholder' => 'Title of the Post']) }} 
     </div> 
     <div class="form-group"> 
      {{ Form::label('desc', 'Desc') }} 
      {{ Form::textarea('desc', $topic->topic_body, ['class' => 'form-control', 'placeholder' => 'Description of the Post']) }} 
     </div> 
     {{ Form::submit('Submit', ['class' => 'btn btn-default']) }} 
    {!! Form::close() !!} 
</div> 

我做了什麼錯在這裏?

+0

@ParantapParashar但是對於什麼?併爲哪個控制器? –

+0

你的代碼有太多的錯誤。 –

+0

我認爲你必須把你的更新方法和路線放在這裏。 –

回答

1

相反的:

{!! Form::open(['action' => '[email protected]', 'method' => 'POST']) !!} 

使用

{!! Form::open(['url' => route('topics.update', $topic->id), 'method' => 'POST']) !!} 

,因爲你的路線,你需要傳遞要更新的話題ID。此外,使用named routes代替Controller @ method表示法更合理。

+0

是的,它工作。謝啦。 –

1

讓我們承認您的update()方法已經在您的TopicController上實現。

首先需要聲明另一條路線:

Route::put('/boards/topics/edit/{id}', '[email protected]'); 
//  ^^^ 

然後通過這個改變你的模子開口:

{!! Form::open(['action' => ['[email protected]', $topic->id], 'method' => 'put']) !!} 
//              ^^^^^^^^^^    ^^^ 

它應該工作。

+0

同樣的錯誤.. –

+0

你確定你已經修改了你的'Form :: open'參數嗎?試試這個命令:'artisan route:clear && artisan cache:clear' –

+0

上面的解決方案工作。我沒有通過帖子的ID。這是創建錯誤。 –

相關問題