Как перенаправить именованный маршрут с помощью строки запроса?

   public function update()
  

      {
            //I've removed the logic for simplicity
            
            return redirect(route('vehicles.show', $vehicle))->with('flash', 
           'Vehicle Edited Successfully');
      }

Пробовал некоторые решения и некоторые ссылки на документацию, но не смог заставить ее работать. Любая помощь будет высоко оценена, ура!

Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Как получить URL-адрес реферера в PHP и Laravel?
Как получить URL-адрес реферера в PHP и Laravel?
Когда пользователи посещают ваш сайт, бывает полезно знать, откуда они пришли. URL-адрес реферера предоставляет информацию о странице, на которой...
Привязка маршрутной модели в Laravel
Привязка маршрутной модели в Laravel
Laravel - один из самых популярных на сегодняшний день PHP-фреймворков. Одной из его многочисленных функций является Route Model Binding, которая...
0
0
783
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте объединить параметры запроса в методе перенаправления.

return redirect(
    route('vehicles.show', $vehicle) . 
    "?condition = {$vehicle->condition}&make = {$vehicle->make}&model = {$vehicle->model}"
)
->with('flash', 'Vehicle Edited Successfully');

Более безопасным способом объединения параметров строки запроса было бы использование функции http_build_query(), как указано в комментариях @patricus.

$queryString = http_build_query([
    'condition' => $vehicle->condition,
    'make' => $vehicle->make,
    'model' => $vehicle->model
]);

return redirect(route('vehicles.show') . "?{$queryString}")
    ->with('flash', 'Vehicle Edited Successfully');

Спасибо, ваш ответ и другой, представленный здесь, решают мою проблему. Есть ли какие-то преимущества перед другими или это просто вопрос предпочтений?

Alphy Gacheru 20.12.2020 19:26

Не могу придумать никаких преимуществ/недостатков - однако ответ @patricus, вероятно, больше похож на Laravel (ish) - честно говоря, я не знал, что значения, переданные в качестве второго параметра функции маршрута, будут добавляться к строке запроса, если не параметры маршрута - я по-прежнему хотелось бы, чтобы это было однозначно, что это параметры строки запроса, поэтому я буду придерживаться моей версии - для меня это сводится к моим собственным предпочтениям

Donkarnash 20.12.2020 19:33

@Donkarnash Если вы предпочитаете придерживаться этого метода, вы можете включить функцию http_build_query(), чтобы ваши параметры при необходимости получали URL-адрес. Представьте, что в параметре $vehicle->condition есть амперсанд. Без его кодирования это нарушит строку запроса.

patricus 20.12.2020 23:25
Ответ принят как подходящий

Второй параметр помощника route() — это список параметров. Любые переданные параметры, которые не определены в самом маршруте, будут добавлены к URL-адресу в качестве параметров строки запроса.

Ваш код будет выглядеть примерно так:

return redirect(route('vehicles.show', [
    $vehicle,
    'condition' => $vehicle->condition,
    'make' => $vehicle->make,
    'model' => $vehicle->model
]))->with('flash', 'Vehicle Edited Successfully');

Спасибо, ваш ответ и другой, представленный здесь, решают мою проблему. Есть ли какие-то преимущества перед другими или это просто вопрос предпочтений?

Alphy Gacheru 20.12.2020 19:26

@AlphyGacheru Этот метод автоматически кодирует параметры запроса. Так, например, если в условии есть амперсанд, этот метод закодирует его, а простая конкатенация строк — нет. Я думаю, что это немного чище. Кроме того, если вы когда-нибудь переместите их в параметры маршрута, ваш код вообще не нужно будет менять, но это маловероятно.

patricus 20.12.2020 23:27

Другие вопросы по теме