我是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()
方法时出错了。任何帮助将不胜感激。
答案 0 :(得分:398)
命名并不是那么直观:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request)
{
// $_GET parameters
$request->query->get('name');
// $_POST parameters
$request->request->get('name');
答案 1 :(得分:31)
我做得更简单:
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;
}
然后假定您在routing.yml文件中将{foo}和{bar}定义为URL模式的一部分:
acme_myurl:
pattern: /acme/news/{foo}/{bar}
defaults: { _controller: AcmeBundle:Default:getnews }
答案 2 :(得分:16)
您可以使用以下代码获取表单字段值
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()
答案 3 :(得分:12)
试
$request->request->get('acme_demobundle_usertype')['username']
检查公式字段的属性名称
答案 4 :(得分:9)
在控制器内:
$request = $this->getRequest();
$username = $request->get('username');
答案 5 :(得分:9)
您的选择:
$request->request->get('param')
($_POST['param']
)或$request->query->get('param')
($_GET['param']
)<?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
答案 6 :(得分:8)
由于现在不推荐$this->getRequest()
方法,您需要将Request
对象注入控制器操作,如下所示:
public function someAction(Request $request)
之后,您可以使用以下之一。
如果您想从以下请求中获取POST数据:
$request->request->get('var_name');
但是如果你想从请求中获取GET数据,请使用:
$request->query->get('var_name');
答案 7 :(得分:6)
你可以这样做:
$clientName = $request->request->get('appbundle_client')['clientName'];
有时,当属性受到保护时,您无权获取常用访问方法的值:
(POST)
$clientName = $request->request->get('clientName');
(GET)
$clientName = $request->query->get('clientName');
(通用)
$clientName = $request->get('clientName');
答案 8 :(得分:2)
上面的答案涵盖了大多数情况,例如获取查询字符串或表单参数。
使用原始数据时,例如您希望作为[{1}}参数提供的正文中的原始JSON字符串,可以使用方法Request::getContent()
。
json_decode()
可以在HttpFoundation包的文档中找到有关Symfony中HTTP请求的其他有用信息。
答案 9 :(得分:1)
$request = Request::createFromGlobals();
$getParameter = $request->get('getParameter');
答案 10 :(得分:1)
use Symfony\Component\HttpFoundation\Request;
public function indexAction(Request $request, $id) {
$post = $request->request->all();
$request->request->get('username');
}
谢谢,您也可以使用上面的代码
答案 11 :(得分:1)
#www.example / register / admin
/**
* @Route("/register/{role}", name="app_register", methods={"GET"})
*/
public function register(Request $request, $role): Response
{
echo $role ;
}
答案 12 :(得分:0)
如果您需要从select中获取值,可以使用:
$form->get('nameSelect')->getClientData();
答案 13 :(得分:0)
试试这个,它有效
$this->request = $this->container->get('request_stack')->getCurrentRequest();
此致
答案 14 :(得分:0)
public function indexAction(Request $request)
{
$data = $request->get('corresponding_arg');
// this also works
$data1 = $request->query->get('corresponding_arg1');
}
答案 15 :(得分:0)
对于symfony 4用户:
$query = $request->query->get('query');