у меня есть этот контроллер для перенаправления:
$zone='لندن';
$type='خانه';
return redirect()->route('searchResult',['zone' => $request->zone , 'type' => $request->type]);
и вот мой маршрут:
Route::get('/estates/{zone}/{type}', 'EstateController@searchResult')->name('searchResult');
Когда его перенаправляют, я получаю такой URL-адрес:
http://localhost:8000/estates/لندن/خانه
Вместо вышеуказанного я хотел бы иметь этот URL-
http://localhost:8000/estates/خانه/لندن
я не хочу переключать параметры маршрута! нужна помощь ти!
Отредактировано:
у меня есть этот маршрут: /estates/{zone}
и хочу этот маршрут /estates/{zone}/{type} быть подмаршрутом для базового маршрута
но он вернет меня обратным маршрутом, и он не будет дружелюбным! и поэтому я не хочу менять параметры маршрута!
не могу чувак! это изменить мой план на другой маршрут! я пишу не хочу переключать параметры маршрута!
['zone' => $request->zone , 'type' => $request->type] Кажется, он делает то, что должен. Почему бы просто не поменять местами тип и зону?
потому что у меня есть другой маршрут локальный хост: 8000/поместья{zone}/, и я хочу, чтобы этот маршрут:/estates/{zone}/{type} был подмаршрутом для базового маршрута!
Можете ли вы еще раз просмотреть свой вопрос и попытаться обновить его таким образом, чтобы прояснить проблему?
Да! я редактирую свой вопрос!
Можем ли мы увидеть оба ваших маршрута, какой из них стоит перед другим, имя первого маршрута без типа?
Вы хотите, чтобы это были 2 маршрута или один и тот же маршрут с {type} в качестве необязательного параметра?
@KeitelDOG нет, лажа, я просто хочу знать, почему мой маршрут меняется с этого localhost: 8000/усадьбы/لندن/خانه на этот localhost:8000/усадьбы/خانه/لندن, когда я иду таким образом $zone='لندن'; $type='خانه'; Route::get('/estates/{zone}/{type}






Я не могу воспроизвести ваше точное поведение, но у Laravel есть кое-что, чтобы лучше обрабатывать такие подпараметры, которые являются необязательными параметрами. https://laravel.com/docs/5.7/routing#параметры-необязательные параметры
Определите один маршрут и поставьте ? после имени параметра, чтобы сделать его необязательным:
Route::get('/estates/{zone}/{type?}', 'EstateController@searchResult')->name('searchResult');
И в сигнатуре метода действия укажите параметр типа как необязательный.
<?php
public function searchResult($zone, $type=null)
{
echo $zone.' / '.$type;
/*if (!$type) {
$type = 'commune';
return redirect()->route('searchResult',['zone' => request()->zone , 'type' => $type]);
}*/
}
И в вашем случае я действительно не вижу смысла передавать request()->type в качестве параметра маршруту, потому что даже если он нулевой или нет, вы останетесь в том же состоянии. Если в вашем коде есть новая переменная $type, передайте ее как:
return redirect()->route('searchResult',['zone' => request()->zone , 'type' => $type]);
РЕДАКТИРОВАТЬ -------
Если ваш код в контроллере действительно:
$zone='لندن';
$type='خانه';
return redirect()->route('searchResult',['zone' => $request->zone , 'type' => $request->type]);
Тогда я думаю, что вы должны использовать переменную $zone и $type вместо значения параметров запроса:
$zone='لندن';
$type='خانه';
return redirect()->route('searchResult',['zone' => $zone , 'type' => $type]);
Просто поменяйте местами
{type}и{zone}в определении маршрута?