аргумент URL-адреса cakephp в формате json

#php #cakephp #routes #cakephp-1.3

#php #cakephp #маршруты #cakephp-1.3

Вопрос:

Я хочу следующий тип 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:

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

В CakePHP вы можете задать именованные параметры в URL, поэтому, если у вас есть URL, например:

 mysite.com/name:John
 

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

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

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