Аргумент URL CakePHP в формате JSON - PullRequest
0 голосов
/ 02 ноября 2011

Я хочу следующий тип URL, используя cakephp.

http://localhost/project1/controller1/action1/[{"user_id":"1","udid":"","msg":"","nick_n":"Danis","post_t":"2011-10-21 12:15:00","source":"A"}]/50

, где [{"user_id":"1","udid":"","msg":"","nick_n":"Danis","post_t":"2011-10-21 12:15:00","source":"A"}] и 50 - аргументы.

Я написал следующую строку в файле /app/config/routes.php.

Router::connect('/controller/action/*', array('controller' => 'controller1', 'action1' => 'actionName'));

Но когда я отлаживаю выше URL, я не получаю аргумент в формате json.

Вот мое действие.

function action1($arg1 = NULL, $arg2 = NULL) {
      // I am getting 50 in $arg1 and $arg2 = NULL.
}

Пожалуйста, скажите мне, если я что-то здесь упустил. Я не получаю аргумент в формате json в $ arg1.

Спасибо.

1 Ответ

1 голос
/ 02 ноября 2011

проблема вызвана символом ":".

В CakePhp вы можете установить именованные параметры в URL, так что если у вас есть URL, например:

mysite.com/name:John

торт сгенерирует массив $this->params['named'] в контроллере. В вашем случае, торт идентифицирует «:» в URL и попытается создать именованный параметр тоже. К сожалению, URL-кодирование параметра не решит проблему

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

Надеюсь, это поможет

...