从Symfony Controller中的树枝文件中获取输入值

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

我正在尝试检查输入到存储在数据库中的用户名,但是尝试“ var_dump($ username);”时我从NULL输入中获得的值,我在做什么错了?

这是我的控制器类

 <?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Admin;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

   class LoginController extends AbstractController
     {

    /**
      * @Route("/admin", name="admin")
 */
public function connect_admin(Request $request)
{

    $username= $request->query->get('username');

    $repository = $this->getDoctrine()->getRepository(Admin::class);


    $user =  $repository->findOneBy(['user' => $username]);

    var_dump($username);
    if ($user) {
        $message = "Success";
        echo "<script type='text/javascript'>alert('$message');</script>";
        return $this->render('site/admin.html.twig');

    }

   else{
    $message = "Try again";


    echo "<script type='text/javascript'>alert('$message');</script>";
   }


}



   }

表格:

<form class="login100-form validate-form flex-sb flex-w" method="GET" action="LoginController.php">

这就是按钮href中的内容

<a class="login100-form-btn" name="button_save" id="button_save" href="{{ path('admin') }}">
                        Login
</a>
php symfony twig symfony4
2个回答
0
投票

尝试一下,

向表单添加ID:

<form class="login100-form validate-form flex-sb flex-w" id="myForm" method="GET" action="{{ path('admin') }}">

将登录链接更改为:

<a class="login100-form-btn" name="button_save" id="button_save" href="javascript:$('#myForm').submit();">Login</a>

现在,当您单击登录链接时,它应该将表单提交给connect_admin操作。现在,您可以使用

访问控制器中的提交值
$request->query->get('field_name');

0
投票

提交按钮应采用表格形式,最好使用post方法,并且动作应指向路线而不是控制器上,因此请尝试以下操作:

<form class="login100-form validate-form flex-sb flex-w" method="POST" action="{{path('admin')}}">

 <input type="text" name="username" />
 <input type="submit">

</form>

控制器

/**
 * @Route("/admin", name="admin")
 */
public function connect_admin(Request $request)
{

// use request->get not query->get
$username= $request->request->get('username');

$repository = $this->getDoctrine()->getRepository(Admin::class);

// find one by username not by user
$user =  $repository->findOneBy(['username' => $username]);

var_dump($username);
if ($user) {
    $message = "Success";
    echo "<script type='text/javascript'>alert('$message');</script>";
    return $this->render('site/admin.html.twig');

}

else{
$message = "Try again";


echo "<script type='text/javascript'>alert('$message');</script>";
}
© www.soinside.com 2019 - 2024. All rights reserved.