Как получить параметры запроса в symfony2

Я очень новичок в symfony. В других языках, таких как java и другие, я могу использовать request.getParameter('parmeter name') чтобы получить значение.

Есть ли что-то подобное, что мы можем сделать с symfony2.
Я видел несколько примеров, но никто не работает для меня. Предположим, у меня есть поле формы с именем пользователя . В форме action я попытался использовать что-то вроде этого:

 $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() . Любая помощь будет оценена.

Solutions Collecting From Web of "Как получить параметры запроса в symfony2"

Именование не все настолько интуитивно понятное:

 use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request) { // $_GET parameters $request->query->get('name'); // $_POST parameters $request->request->get('name'); 

Я делаю это еще проще:

 use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request) { $foo = $request->get('foo'); $bar = $request->get('bar'); } 

Другой вариант – ввести ваши параметры в определение функции действия:

 use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request, $foo, $bar) { echo $foo; echo $bar; } 

который затем предполагает, что вы определили {foo} и {bar} как часть вашего шаблона URL в файле routing.yml:

 acme_myurl: pattern: /acme/news/{foo}/{bar} defaults: { _controller: AcmeBundle:Default:getnews } 

пытаться

 $request->request->get('acme_demobundle_usertype')['username'] 

проверять имя атрибута вашего форматированного поля

Вы можете использовать следующий код для получения значений поля формы

 use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request) { // retrieve GET and POST variables respectively $request->query->get('foo'); $request->request->get('bar', 'default value if bar does not exist'); } 

Или вы также можете получить все значения формы в виде массива, используя

 $request->request->all() 

Внутри контроллера:

 $request = $this->getRequest(); $username = $request->get('username'); 

Поскольку теперь метод $this->getRequest() устарел, вам нужно $this->getRequest() объект Request в действие вашего контроллера следующим образом:

 public function someAction(Request $request) 

после этого вы можете использовать одно из следующих.

Если вы хотите получить данные POST из запроса, используйте следующую команду:

 $request->request->get('var_name'); 

но если вы хотите получить данные GET из запроса, используйте это:

 $request->query->get('var_name'); 

Ваши варианты:

  1. Просто:
    • $request->request->get('param') ( $_POST['param'] ) или
    • $request->query->get('param') ( $_GET['param'] )
  2. Хорошие формы Symfony со всей валидацией, трансляцией ценностей и рендерингом форм с ошибками и многими другими функциями:
  3. Что-то между ними (см. Пример ниже)
 <?php /** * @Route("/customers", name="customers") * * @param Request $request * @return Response */ public function index(Request $request) { $optionsResolver = new OptionsResolver(); $optionsResolver->setDefaults([ 'email' => '', 'phone' => '', ]); $filter = $optionsResolver->resolve($request->query->all()); /** @var CustomerRepository $customerRepository */ $customerRepository = $this->getDoctrine()->getRepository('AppBundle:Customer'); /** @var Customer[] $customers */ $customers = $customerRepository->findFilteredCustomers($filter); return $this->render(':customers:index.html.twig', [ 'customers' => $customers, 'filter' => $filter, ]); } 

Подробнее о OptionsResolverhttp://symfony.com/doc/current/components/options_resolver.html

Вы можете сделать это так:

 $clientName = $request->request->get('appbundle_client')['clientName']; 

Иногда, когда атрибуты защищены, у вас не может быть доступа для получения значения для общего метода доступа:

(ПОСЛЕ)

  $clientName = $request->request->get('clientName'); 

(ПОЛУЧИТЬ)

 $clientName = $request->query->get('clientName'); 

(Generic)

 $clientName = $request->get('clientName'); 
 $request = Request::createFromGlobals(); $getParameter = $request->get('getParameter'); 

Большинство случаев рассматриваются в ответах выше.

В случае отправки данных строки (например, обработка строки JSON, отправленной в приложение удаленной службой с использованием метода HTTP POST.), GetContent () может использоваться:

 $content = $request->getContent(); 

Дополнительную полезную информацию о http-запросах в Symfony можно найти по адресу: https://symfony.com/doc/2.8/components/http_foundation.html.

Если вам нужно получить значение из select, вы можете использовать:

 $form->get('nameSelect')->getClientData(); 

Попробуйте это, он работает

 $this->request = $this->container->get('request_stack')->getCurrentRequest(); 

С уважением

 public function indexAction(Request $request) { $data = $request->get('corresponding_arg'); // this also works $data1 = $request->query->get('corresponding_arg1'); }