Создать ссылку на функцию контроллера и перенаправить на другую страницу с идентификатором

#laravel

#laravel

Вопрос:

Привет, я пытаюсь обновить счетчик уведомлений. этот счетчик представляет собой сумму ‘непрочитанных’ столбцов, поэтому допустим, у пользователя есть 5 непрочитанных сообщений. Моя логика заключается в том, что если пользователь нажмет кнопку, ему / ей будет указано на контроллер для обновления записи, в моем случае, ReportsController@updateSu

итак, у меня есть это в моем маршруте,

 Route::get('reports/updateSu/{id}', 'ReportsController@updateSu')
       ->name('reports.updateSu');
  

и вот моя кнопка

 <form action="{{ route('reports.updateSu', $payment->id)}}" method="POST">
    {{ csrf_field() }}
    {{ method_field('put') }}
    <input type="hidden" name="setDelivered" value="4">
    <button type="submit" class="btn btn-danger"><i class="fas fa-edit"></i></button>
</form>
  

после запуска обновления я хочу перенаправить пользователя на эту страницу, /salesPayments/{id}/edit

Вот что я пробовал до сих пор,

 public function updateSu($id)
{
    // ---- do some updates here ---
    return redirect()->route('salesPayments',$id,'edit');
}
  

Как я могу правильно сделать это здесь, в laravel? заранее спасибо!

Ответ №1:

задайте переменную, указывающую на нужный маршрут

 $route = "/salesPayments/$id/edit"
  

затем используйте redirect функцию с маршрутом

 public function updateSu($id)
{
    // ---- do some updates here ---
    $route = "/salesPayments/$id/edit"
    return redirect($route);
}
  

Комментарии:

1. Привет @Ali, у меня сбой, маршрут действия моей формы не доходит до моего элемента управления, action =»{{ route(‘reports.updateSu’, $payment-> id)}}» . снова мой маршрут Route:: get(‘reports / {id} / updateSu’, ‘ReportsController @updateSu’)-> name (‘reports.updateSu’); они оба в порядке?

2. да, я так и думал, потому что в вашем маршруте вы прослушиваете GET запрос, а в вашей форме вы устанавливаете для него значение PUT request

3. о, чувак, спасибо, это так неосторожно с моей стороны! Я долго смотрю на них и не замечаю метода form хахаха, большое тебе спасибо @Ali!

Ответ №2:

Убедитесь, что функция указывает на ссылку редактирования

верните redirect()-> route(‘Платежи за продажу’, $id);