J'ai cette vue:
//login.html.twig
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MY APP</title>
</head>
<body>
<form action="{{ path('conection') }}" method="post" name="formulario_login">
<label for="username">User:</label>
<input type="text" id="username" name="_username" value="{{ last_username|default('') }}" />
<br />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<br />
<input type="checkbox" id="remember_me" name="_remember_me"/>
<label for="remember_me">Remember me</label>
<br />
<input type="submit" name="login" value="Login" />
</form>
</body>
</html>
Dans mon fichier de routage:
conection:
pattern: /conection
defaults: { _controller: UserBundle:Default:conection}
Et mon contrôleur
<?php
namespace myApp\UserBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
//some other action functions
public function conectionAction(){
}
}
Ma question est de savoir comment obtenir dans le contrôleur les valeurs des champs utilisateur et mot de passe pour travailler avec eux? J'ai une recherche mais je ne vois pas de solution claire.
Essayez ceci, à titre d'exemple et en utilisant Symfony2.8
Voir:
<form action="{{ path('connection') }}" method="post" name="formulario_login">
<label for="username">User:</label>
<input type="text" id="username" name="_username" value="" />
<br />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<br />
<input type="checkbox" id="remember_me" name="_remember_me"/>
<label for="remember_me">Remember me</label>
<br />
<input type="submit" name="login" value="Login" />
</form>
Contrôleur:
public function connectionAction(Request $request) {
$username = $request->request->get('_username');
$password = $request->request->get('_password');
....
}
Une autre façon d'obtenir des paramètres, comme vous pouvez le voir, le nommage n'est pas si intuitif:
// $_GET parameters
$request->query->get('name');
// $_POST parameters
$request->request->get('name');
Vous devez passer l'objet Request à la méthode d'action puis le traiter:
public function conectionAction(Request $request){
if ($request->getMethod() == Request::METHOD_POST){
$user = $request->request->get('user');
$password = $request->request->get('password');
}
}
Cependant, je vous suggère d'utiliser le Symfony Form Component pour composer avec cette situation.