Я использую ресурсный маршрут. А теперь я хотел бы добавить еще один маршрут:
Route::resource('discussion', 'DiscussionsController');
Route::post('/discussion/reply/{id}',[
'use' => 'DiscussionsController@reply',
'as' => 'discussion.reply'
]);`
А вот и функция ответа,
public function reply($id)
{
$discussion = Discussion::find($id);
$reply = Reply::create([
'user_id'=>Auth::id(),
'discussion_id' => $id,
'content'=> \request()->reply
]);
return redirect()->back();
}
Это лезвие, которое перенаправляет на функцию магазина.
<div class = "card">
<div class = "card-body">
Leave a reply
<form method = "post" action = "{{route('discussion.reply', ['id'=> $discussion->id])}}">
{{csrf_field()}}
<div class = "form-group">
<textarea name = "reply" class = "form-control"></textarea>
</div>
<div class = "form-group">
<button type = "submit" class = "btn btn-primary ">Reply</button>
</div>
</form>
</div>
В чем проблема?






Попробуйте изменить порядок маршрутов
Вместо
Route::resource('discussion', 'DiscussionsController');
Route::post('/discussion/reply/{id}',[
'use' => 'DiscussionsController@reply',
'as' => 'discussion.reply'
]);
Используйте это
Route::post('/discussion/reply/{id}',[
'use' => 'DiscussionsController@reply',
'as' => 'discussion.reply'
]);
Route::resource('discussion', 'DiscussionsController');
Я не понижал ваш ответ, но причина того, что порядок маршрута не имеет значения в этом случае, заключается в том, что у вас есть 3-й сегмент uri, поэтому Laravel будет знать, что вы не пытаетесь достичь одного из маршрутов ресурсов, у которого есть только 2 uri. сегментов не больше.
все еще не работает. Замыкание в действии маршрута
Используете ли вы промежуточное ПО в маршруте? Если да, убедитесь, что вы используете ключ «использует», а не «использовать». Пример:
Route::get('foo/bar/{id}',['middleware'=>'auth','uses'=>'FooController@show']);
Или вы можете просто передать имя контроллера и функцию в качестве второго параметра без массива на основе значения ключа.
Я могу ошибаться, но с первого взгляда я бы сказал, что это потому, что у вас есть use вместо uses для вашего Route.
Попробуйте изменить
'use' => 'DiscussionsController@reply',
к
'uses' => 'DiscussionsController@reply',
Во-вторых, вам не нужен \ с \request()->reply.
Поменяйте его на request()->reply или даже на request('reply')
Почему это было отклонено? Если вы собираетесь проголосовать против ответа, вы должны хотя бы объяснить, почему вы это сделали.
Какую именно ошибку вы получаете? Можете ли вы включить трассировку стека?