如何获取symfony2中的请求参数

我对symfony很陌生。 在其他语言如java和其他语言中,我可以使用request.getParameter('parmeter name')来获取值。

有什么类似的,我们可以用symfony2做。
我看过一些例子,但没有一个能为我工作。 假设我有一个名称为username的表单域。 在表单动作中,我试图使用这样的东西:

 $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()方法做错了。 任何帮助将不胜感激。

命名并不是那么直观:

 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'); } 

另一个select是将你的参数引入你的动作函数定义中:

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

然后假定您在routing.yml文件中将{foo}和{bar}定义为URL模式的一部分:

 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()方法已被废弃,所以需要将Request对象注入到控制器中,如下所示:

 public function someAction(Request $request) 

之后,您可以使用下列之一。

如果您想从请求使用下面获取POST数据:

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

但是如果你想从请求中获取GET数据,使用这个:

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

您的select:

  1. 简单:
    • $request->request->get('param')$_POST['param'] )或者
    • $request->query->get('param')$_GET['param']
  2. 良好的Symfonyforms与所有validation,价值转换和forms呈现错误和许多其他function:
  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, ]); } 

有关OptionsResolver更多信息 – http://symfony.com/doc/current/components/options_resolver.html

你可以这样做:

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

有时,当属性受到保护时,您无法获得通用访问方法的值:

(POST)

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

(得到)

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

(通用)

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

上面的答案涵盖了大部分情况。

如果行数据已发送(例如,处理通过使用HTTP POST方法的远程服务发送给应用程序的JSONstring),可以使用getContent():

 $content = $request->getContent(); 

有关Symfony中http请求的其他有用信息,请访问: 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'); }