Я очень новичок в Symfony. В других языках, таких как Java и другие, я могу использовать, request.getParameter('parmeter name')
чтобы получить значение.
Есть ли что-нибудь подобное, что мы можем сделать с Symfony2.
Я видел несколько примеров, но ни один не работает для меня. Предположим, у меня есть поле формы с именем пользователя . В форме действия я попытался использовать что-то вроде этого:
$request = $this->getRequest();
$username= $request->request->get('username');
Я также пытался
$username = $request->getParameter('username');
и
$username=$request->request->getParameter('username');
Но ни один из вариантов не работает. Однако следующее работает нормально:
foreach($request->request->all() as $req){
print_r($req['username']);
}
Где я делаю неправильно при использовании getParameter()
метода. Любая помощь будет оценена.
$request->request-get()
должно быть$request->request->get()
. Может ли это быть?get()
это правильный метод, и (б) включили уведомления PHP, чтобы увидеть, есть ли проблемы? (c) Есть ли в Symfony 2 панель отладки, такая как symfony 1, так что вы можете увидеть, не допустили ли вы каких-либо ошибок?Ответы:
Именование не так уж и интуитивно понятно:
источник
$_GET
данные - это данные из строки запроса (GET
запрос вообще не требуется), а$_POST
данные - это данные из тела запроса (также не обязательно должен бытьPOST
запросPUT
).$request->get
и$request->post
было бы проще.Я делаю это еще проще:
Другой вариант - ввести ваши параметры в определение вашей функции действия:
который затем предполагает, что вы определили {foo} и {bar} как часть вашего шаблона URL в файле routing.yml:
источник
foo
параметр как в строке запроса, так и в теле POST, какой из них будет возвращен$request->get('foo')
?$request->get('foo');
работает для ВСЕХ сумок (порядок: PATH, GET, POST). Тем не менее,$request->request->get('foo');
работает только для POST Bag. Наконец, первый ($request->get()
) не рекомендуется, если мы знаем, где находятся данные (GET / POST).Вы можете использовать следующий код, чтобы получить значения полей формы
Или Вы также можете получить все значения формы в виде массива, используя
источник
пытаться
проверить имя атрибута вашего поля формы
источник
Внутри контроллера:
источник
$this->getRequest()
устарела в пользу введения запроса в действие контроллера, например:public function showAction(Request $request, $id);
Ваши варианты:
$request->request->get('param')
($_POST['param']
) или$request->query->get('param')
($_GET['param']
)Подробнее о
OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.htmlисточник
Так как
$this->getRequest()
метод now устарел, вам нужно внедритьRequest
объект в действие вашего контроллера следующим образом:после этого вы можете использовать один из следующих.
Если вы хотите получить данные POST из запроса, используйте следующее:
но если вы хотите получить данные GET из запроса, используйте это:
источник
Вы можете сделать это так:
Иногда, когда атрибуты защищены, у вас не может быть доступа, чтобы получить значение для общего метода доступа:
(ПОЧТА)
(ПОЛУЧИТЬ)
(Generic)
источник
$clientName = $request->query->get('clientName','any');
Большинство случаев, таких как получение строки запроса или параметров формы, описаны в ответах выше.
При работе с необработанными данными, например, необработанной строкой JSON в теле, которую вы хотели бы привести в качестве аргумента
json_decode()
,Request::getContent()
можно использовать метод .Дополнительные полезные сведения о HTTP-запросах в Symfony можно найти в документации по пакету HttpFoundation .
источник
источник
Request
параметра? (например, в частных функциях класса контроллера)Спасибо, вы также можете использовать приведенный выше код
источник
Если вам нужно получить значение из выбора, вы можете использовать:
источник
Попробуйте это, это работает
С уважением
источник
источник
Для пользователей Symfony 4:
источник
# Www.example / регистрация / админ
источник