Привет,
У меня странная проблема с данными, отправляемыми в Cake по URL-пути. Если путь включает в себя объекты, закодированные в URL, закодированные символы, похоже, удаляются, а остальная часть пути URL не передается моему контроллеру. Например:
http://mydomain.com/products/search/pants+%26%2A%25+shoes/1/pg-2/
Это должно передать строку pants &*% shoes
действию search()
моего контроллера продуктов в качестве первого аргумента, с 1
и pg-2
в качестве двух других аргументов. Но вместо этого я просто получаю pants
(с завершающим пробелом) в качестве первого аргумента и без второго или третьего аргумента. Я убедился, что класс Sanitize не используется, и у меня установлен Configure::write('App.encoding', 'UTF-8');
.
Есть мысли?
Спасибо, связки,
-saturn
Обновление: Cake видит% 26 в качестве разделителя амперсандов аргументов строки запроса. Разве Cake не должен знать разницу между разделителем строк запроса и литеральным символом? Или я пропускаю что-то кровоточащее очевидное? (Я работал много часов ...)
Обновление 2: Я думаю, что это ошибка. Если я передам URL, как:
http://mydomain.com/products/search/?q=pants%20%2A%24%25%5E%26%20shoes&cat=1&pg=2
Cake анализирует его корректно, то есть различные аргументы сохраняются как параметры строки запроса в $this->params['url']
. Икота, по-видимому, происходит только при использовании закодированного амперсанда в пути URL.
Кстати, я использую последнюю версию Cake 1.3.6.
Мне очень интересно узнать мнение другого человека по этому поводу. Спасибо.