Как извлечь специальные символы из маршрута в Zend Framework 3 - PullRequest
0 голосов
/ 18 декабря 2018

Я отправляю URL со специальными символами.

/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A+

Как видите, значение переменной advanceSearchValue равно A1A+

Но когда я получаю этов контроллере

$this->params()->fromQuery("advanceSearchValue");

он показывает мне A1A.Он добавляет пробел вместо +

Это мой маршрут конфигурации.

"contacts"                   => [
            "type"                   => "segment",
            "options"                => [
                "route"              => "/contacts[/:action[/:id]]",

                "defaults"           => [
                    "controller"     => Controller\ContactController::class,
                    "action"         => "index",
                ],
            ],
        ],

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Вам необходимо закодировать ваш URL-адрес запроса: Вы можете закодировать его с помощью php или Javascript -

В javascript:

var url= "/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A+";
 url= encodeURI(uri);

В php:

$url = urlencode('/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A+');

Затем используйте этот закодированный URL в вашем ajax.

0 голосов
/ 18 декабря 2018

Это связано с тем, что + имеет специальное значение в URL, и Zend знает это и правильно заменяет его пробелом.

Чтобы получить символ + в проанализированных данных, вам нужно перейти по URLЭто.Это дает значение %2B.

Таким образом, ваш полный URL-адрес должен быть

/contacts?advanceSearch=true&advanceSearchType=rating&advanceSearchValue=A1A%2B

Кстати, для чего создается этот URL-адрес, веб-браузер должен автоматически преобразовывать символ + перед отправкой его на веб-сервер?

...