我是symfony的新手.在其他语言如java和其他语言中我可以request.getParameter('parmeter name')用来获取值.
我们可以用symfony2做类似的事吗.
我见过一些例子,但没有一个对我有用.假设我有一个名称为username的表单字段.在表单操作中,我尝试使用以下内容:
$request = $this->getRequest();
$username= $request->request->get('username');
Run Code Online (Sandbox Code Playgroud)
我也试过了
$username = $request->getParameter('username');
和
$username=$request->request->getParameter('username');
Run Code Online (Sandbox Code Playgroud)
但是没有一个选项可行.但是后续工作正常:
foreach($request->request->all() as $req){
print_r($req['username']);
}
Run Code Online (Sandbox Code Playgroud)
我在哪里使用getParameter()方法做错了.任何帮助将不胜感激.
Cer*_*rad 407
命名并不是那么直观:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request)
{
// $_GET parameters
$request->query->get('name');
// $_POST parameters
$request->request->get('name');
Run Code Online (Sandbox Code Playgroud)
pko*_*out 31
我做得更简单:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request)
{
$foo = $request->get('foo');
$bar = $request->get('bar');
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是将您的参数引入您的动作函数定义:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request, $foo, $bar)
{
echo $foo;
echo $bar;
}
Run Code Online (Sandbox Code Playgroud)
然后假定您在routing.yml文件中将{foo}和{bar}定义为URL模式的一部分:
acme_myurl:
pattern: /acme/news/{foo}/{bar}
defaults: { _controller: AcmeBundle:Default:getnews }
Run Code Online (Sandbox Code Playgroud)
Sco*_*ion 17
您可以使用以下代码获取表单字段值
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');
}
Run Code Online (Sandbox Code Playgroud)
或者您也可以通过使用获取所有表单值作为数组
$request->request->all()
Run Code Online (Sandbox Code Playgroud)
小智 12
尝试
$request->request->get('acme_demobundle_usertype')['username']
Run Code Online (Sandbox Code Playgroud)
检查您的公式字段的属性名称
在控制器内:
$request = $this->getRequest();
$username = $request->get('username');
Run Code Online (Sandbox Code Playgroud)
你的选择:
$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,
]);
}
Run Code Online (Sandbox Code Playgroud)
更多关于OptionsResolver- http://symfony.com/doc/current/components/options_resolver.html
由于现在$this->getRequest()不推荐使用方法,您需要将Request对象注入控制器操作,如下所示:
public function someAction(Request $request)
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用以下之一.
如果要从请求中获取POST数据,请执行以下操作:
$request->request->get('var_name');
Run Code Online (Sandbox Code Playgroud)
但是如果你想从请求中获取GET数据,请使用:
$request->query->get('var_name');
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以这样做:
$clientName = $request->request->get('appbundle_client')['clientName'];
Run Code Online (Sandbox Code Playgroud)
有时,当属性受到保护时,您无权获取通用访问方法的值:
(POST)
$clientName = $request->request->get('clientName');
Run Code Online (Sandbox Code Playgroud)
(得到)
$clientName = $request->query->get('clientName');
Run Code Online (Sandbox Code Playgroud)
(通用)
$clientName = $request->get('clientName');
Run Code Online (Sandbox Code Playgroud)