Я не могу воспроизвести ваше точное поведение, но у Laravel есть кое-что, чтобы лучше обрабатывать такие субпараметры, как необязательные параметры.https://laravel.com/docs/5.7/routing#parameters-optional-parameters
Определите один Маршрут и поставьте ?
после имени вашего параметра, чтобы сделать его необязательным:
Route::get('/estates/{zone}/{type?}', 'EstateController@searchResult')->name('searchResult');
И в сигнатуре вашего метода Action, укажите параметр типа как необязательный.
<?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]);