如何获取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:
- 简单:
-
$request->request->get('param')
($_POST['param']
)或者 -
$request->query->get('param')
($_GET['param']
)
-
- 良好的Symfonyforms与所有validation,价值转换和forms呈现错误和许多其他function:
- 之间的东西(见下面的例子)
<?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'); }