检查请求中是否存在参数

Rey*_*rPM 9 php symfony symfony-http-foundation

我有这个功能:

/**
 * @Secure(roles="IS_AUTHENTICATED_FULLY")
 * @Route("/chequearFabricanteDistribuidor", name="chequearFabricanteDistribuidor", condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'")
 * @Method("GET")
 */

public function chequearFabricanteAction(Request $request)
{
    $em       = $this->getDoctrine()->getManager();
    $entities = $em->getRepository('AppBundle:FabricanteDistribuidor')->findOneBy(
        array( 'nombre' => $request->query->get('fabricante')['nombre'] )
    );

    $response['valid'] = true;

    if ($entities) {
        $response['valid'] = false;
    }

    return new JsonResponse($response);
}
Run Code Online (Sandbox Code Playgroud)

需要从两种不同的形式调用该函数,唯一不同的是保存该值的请求var.在第一种形式是:$request->query->get('fabricante')['nombre']而在第二种形式是,$request->query->get('distribuidor')['nombre']所以我问是否正确的方法来处理这个问题可能是:

if (isset($request->query->get('fabricante'))) 
{
   $nombre = $request->query->get('fabricante')['nombre'];
}
else
{
   $nombre = $request->query->get('distribuidor')['nombre'];
}
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?存在更好的一个?

Ale*_*aut 18

正如Cerad在回复中发布的那样,您可以使用:

$request->query->has('distribuidor')
Run Code Online (Sandbox Code Playgroud)

  • 对于那些使用`$ request-> query->的人来说,有(...)`return`null`,请确保你没有执行POST请求.对于POST请求,请使用`$ request-> request-> has(...)`. (4认同)