Как передать нормальные параметры в URL в Symfony? - PullRequest
3 голосов
/ 16 января 2011

Я пытаюсь передать параметры через обычную строку запроса, например:

/user/login?foo=bar&abc=123

К сожалению, нигде в экземпляре sfRoute нигде не содержится данных для параметров foo или abc. Как мне это исправить?

Редактировать: Вот код, который я использую согласно запросу Тома:

/ приложений / API / конфигурации / routing.yml:

login:
  url:   /user/login
  param: { module: user, action: login }

/ приложений / API / модули / пользователь / действия / actions.class.php:

<code>class userActions extends sfActions {
    public function executeLogin(sfWebRequest $request) {
        echo '<pre>'.print_r($this->getRoute(), true).'
'; } }

Вот и все. Вывод показывает, что $this->getRoute() не содержит информации о foo или abc, когда я передаю их в строке запроса с URL-адресом "/user/login?foo=bar&abc=123".

Ответы [ 3 ]

2 голосов
/ 16 января 2011

При доступе к переменным используйте объект $ request, а не sfRoute:

$request->getParameter('foo')

Убедитесь, что функция в действии, которая получает эти параметры запроса, объявляет ее как входящую переменную:

public function executeSomeAction($request)  {  }

Если вы ищете эквивалент $_SERVER['QUERY_STRING'] в Symfony, я не нашел бы его и заинтересовался бы сам.

UPDATE:

Я думаю, что метод, который вы используете, будет печатать только маршрут. Я думаю, что для этого вам нужно получить доступ к ним через объект $ request, как я упоминал ранее. Например:

$params_typed = $request->getParameterHolder();  // ... and grab them from here

... или использовать строку запроса к серверу, или обрабатывать входящие параметры индивидуально.

Извините, я не могу помочь.

ВТОРОЕ ОБНОВЛЕНИЕ:

На самом деле, только что протестировал небольшую идею:

если вы определите параметры в вашем routing.yml следующим образом:

login:
  url:   /user/login
  param: { module: user, action: login, foo: something, abc: something }

Вы можете получить к ним доступ через:

$full_path = sfContext::getInstance()->getRouting()->getCurrentInternalUri();
1 голос
/ 25 февраля 2011

Обратите внимание, что если вы хотите использовать параметр "extra_parameters_as_query_string: true", вы должны удалить конечную звезду вашего маршрута:

default:
  url:   /:module/:action
1 голос
/ 20 января 2011

Вам нужно настроить это на фабриках .yml Я думаю:

routing:
  class: sfPatternRouting
  param:
    extra_parameters_as_query_string: true
...