Маршрут Laravel застрял в UTF-8 - PullRequest
0 голосов
/ 01 марта 2019

У меня есть этот контроллер для перенаправления:

$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} быть под-маршрутомдля базового маршрута
, но его возвращают мне обратный маршрут, и он не будет дружелюбным!и поэтому я не хочу менять параметры маршрута!

1 Ответ

0 голосов
/ 01 марта 2019

Я не могу воспроизвести ваше точное поведение, но у 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]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...