我对symfony很陌生。在其他语言,如java和其他我可以使用请求。getParameter('参数名')来获取值。

symfony2有类似的功能吗? 我见过一些例子,但没有一个对我有用。假设我有一个名称为用户名的表单字段。在action表单中,我尝试使用这样的东西:

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

我也试过

$username = $request->getParameter('username');

and

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

2021年11月更新:$request->get('name')在5.4中已弃用,从6.0开始将是私有的。很长一段时间以来,人们都不鼓励使用它。

其他回答

# www.example /注册/ admin

  /**
 * @Route("/register/{role}", name="app_register", methods={"GET"})
 */
public function register(Request $request, $role): Response
{
 echo $role ;
 }

命名并不那么直观:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // $_GET parameters
    $request->query->get('name');

    // $_POST parameters
    $request->request->get('name');

2021年11月更新:$request->get('name')在5.4中已弃用,从6.0开始将是私有的。很长一段时间以来,人们都不鼓励使用它。

你的选择:

简单: 请求- >请求- >获取美元(“参数”)($ _POST['参数'])或 请求- >查询- >获取美元(“参数”)($ _GET['参数']) 良好的Symfony表单具有所有验证、值转换和带有错误的表单呈现以及许多其他特性: http://symfony.com/doc/current/book/forms.html http://symfony.com/doc/current/cookbook/form/index.html 介于两者之间(参见下面的例子)

<?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

try

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

检查公式字段的属性名称

现在$this->getRequest()方法已弃用,您需要将Request对象注入到您的控制器动作,如下所示:

public function someAction(Request $request)

之后,您可以使用以下方法之一。

如果你想从请求中获取POST数据,使用以下方法:

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

但是如果你想从请求中获取GET数据,请使用以下方法:

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