Я пытаюсь передать параметры через обычную строку запроса, как таковую:
/user/login?foo=bar&abc=123
К сожалению, нигде данные в экземпляре sfRoute не содержат данных для параметров foo или abc. Как я могу это исправить?
Изменить: вот код, который я использую по запросу Тома:
/apps/api/config/routing.yml:
login:
url: /user/login
param: { module: user, action: login }
/apps/api/modules/user/actions/actions.class.php:
class userActions extends sfActions {
public function executeLogin(sfWebRequest $request) {
echo '<pre>'.print_r($this->getRoute(), true).'</pre>';
}
}
Вот и все. Вывод показывает, что $this->getRoute() не содержит информации о foo или abc, когда я передаю их в строке запроса с URL-адресом "/user/login?foo=bar&abc=123".
Ответ 1 · рейтинг 2 · Tom
При доступе к переменным используйте объект $request, а не sfRoute:
$request->getParameter('foo')
Убедитесь, что функция в действии, которое получает эти параметры запроса, объявляет их как входящую переменную:
public function executeSomeAction($request) { }
Если вы ищете эквивалент $_SERVER['QUERY_STRING'] в Symfony, я его не нашел и сам бы заинтересовался.
ОБНОВЛЕНИЕ:
Я думаю, что метод, который вы используете, будет печатать только маршрут. Я думаю, что для этого вам нужно получить к ним доступ через объект $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();
Ответ 3 · рейтинг 1 · COil
Обратите внимание, что если вы хотите использовать параметр "extra_parameters_as_query_string: true", вам необходимо удалить последнюю звезду вашего маршрута:
default:
url: /:module/:action