public function update()
{
//I've removed the logic for simplicity
return redirect(route('vehicles.show', $vehicle))->with('flash',
'Vehicle Edited Successfully');
}
Пробовал некоторые решения и некоторые ссылки на документацию, но не смог заставить ее работать. Любая помощь будет высоко оценена, ура!
Попробуйте объединить параметры запроса в методе перенаправления.
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');
Не могу придумать никаких преимуществ/недостатков - однако ответ @patricus, вероятно, больше похож на Laravel (ish) - честно говоря, я не знал, что значения, переданные в качестве второго параметра функции маршрута, будут добавляться к строке запроса, если не параметры маршрута - я по-прежнему хотелось бы, чтобы это было однозначно, что это параметры строки запроса, поэтому я буду придерживаться моей версии - для меня это сводится к моим собственным предпочтениям
@Donkarnash Если вы предпочитаете придерживаться этого метода, вы можете включить функцию http_build_query(), чтобы ваши параметры при необходимости получали URL-адрес. Представьте, что в параметре $vehicle->condition есть амперсанд. Без его кодирования это нарушит строку запроса.
Второй параметр помощника route() — это список параметров. Любые переданные параметры, которые не определены в самом маршруте, будут добавлены к URL-адресу в качестве параметров строки запроса.
Ваш код будет выглядеть примерно так:
return redirect(route('vehicles.show', [
$vehicle,
'condition' => $vehicle->condition,
'make' => $vehicle->make,
'model' => $vehicle->model
]))->with('flash', 'Vehicle Edited Successfully');
Спасибо, ваш ответ и другой, представленный здесь, решают мою проблему. Есть ли какие-то преимущества перед другими или это просто вопрос предпочтений?
@AlphyGacheru Этот метод автоматически кодирует параметры запроса. Так, например, если в условии есть амперсанд, этот метод закодирует его, а простая конкатенация строк — нет. Я думаю, что это немного чище. Кроме того, если вы когда-нибудь переместите их в параметры маршрута, ваш код вообще не нужно будет менять, но это маловероятно.
Спасибо, ваш ответ и другой, представленный здесь, решают мою проблему. Есть ли какие-то преимущества перед другими или это просто вопрос предпочтений?