Symfony Exception:$ request参数所需的值

问题描述 投票:2回答:2

我有一个loginAction,看起来像这样:

public function loginAction(Request $request){
    if($request->getMethod() == 'POST'){
        $mail = $request->getContent('umail');
        $pass = $request->getContent('upass');
        $em = $this->getDoctrine()->getManager();
        $rep = $em->getRepository('SystemBundle:User');

        $user = $rep->findOneBy(array("email"=>$mail,"pass"=>$pass));
        if($user){
            $id = $user->getId();
            $type = $user->getType();

            return $this->render('@System/Pages/admin/index.html.twig');
        }
    }

提交表单后,我收到以下错误:

控制器“SystemBundle \ Controller \ SystemController :: loginAction()”要求您为“$ request”参数提供一个值(因为没有默认值,或者因为在此之后存在非可选参数)。

以下是路由:

system_login:
path: /login
defaults: { _controller: SystemBundle:System:login}

和形式:

<form method="POST" id="lgn" action="{{ path('system_login') }}">
        <span class="fa fa-times close" onclick="lgn()" ></span><br />
        <span>Login:</span>
        <input type="email" placeholder="Email" required="required" name="umail" />
        <input type="password" placeholder="Password" required="required" name="upass" />
        <button type="submit">login</button>
    </form>

请帮忙...

php symfony symfony-forms
2个回答
4
投票

感谢Kuba Birecki对此回答的评论。

Symfony无法自动装配$ request参数,因为它与可用的autowire-able参数类型列表不匹配。这很可能是因为当您添加Request typehint时,您的IDE为错误的类添加了use语句。

确保use声明适用于Symfony\Component\HttpFoundation\Request


3
投票

我认为你的控制器有问题。试试这个:

use Symfony\Component\HttpFoundation\Request;

class FooController extends Controller
{

    public function loginAction(Request $request)
    {

       if($request->getMethod() == 'POST')
       {
          $mail = $request->request->get('umail');
          $pass = $request->request->get('upass');
          $em = $this->getDoctrine()->getManager();
          $rep = $em->getRepository('SystemBundle:User');

          $user = $rep->findOneBy(array("email"=>$mail,"pass"=>$pass));
          if($user)
          {
             $id = $user->getId();
             $type = $user->getType();

             return $this->render('@System/Pages/admin/index.html.twig');
          }
      }
   }

}

© www.soinside.com 2019 - 2024. All rights reserved.