2017-03-15 35 views
6

mam ten widok:Symfony uzyskać dane formularza w sterowniku

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

w moim pliku routingu:

conection: 
pattern: /conection 
defaults: { _controller: UserBundle:Default:conection} 

i mój kontroler

<?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(){ 

    } 
} 

Moje pytanie brzmi jak mogę w kontrolerze wartości pól użytkownika i hasła do pracy z nimi? Mam wyszukiwania, ale nie widzę jasne rozwiązanie.

+0

http://symfony.com/doc/current/forms.html#handling-form-submissions –

Odpowiedz

8

Spróbuj tego, tytułem przykładu i stosując Symfony2.8

Widok:

<form action="{{ path('conection') }}" 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> 

Kontroler:

public function conectionAction(Request $request) { 
    $username = $request->request->get('_username'); 
    $password = $request->request->get('_password'); 
    .... 
} 

Inny sposób, aby uzyskać parametry, jak widać nazewnictwa nie jest tak intuicyjny:

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

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

Dzięki, teraz mam moje zmiennych w sterowniku, jak mówisz, z query-> get() Metoda wymaga nazwy pola, a nie id. – SensacionRC

+0

Tak @SensacionRC, w tym przykładzie otrzymasz nazwę pól "_username" i "_password", a nie identyfikator, inny sposób i najlepszą praktykę do zbudowania formularza: http://symfony.com/doc/2.8/forms .html – rescobar

2

Należy zdać żądania obiektu do metody działania wtedy sobie z tym poradzić:

public function conectionAction(Request $request){ 
    if ($request->getMethod() == Request::METHOD_POST){ 
     $user = $request->request->get('user'); 
     $password = $request->request->get('password'); 
    } 
} 

Jednak proponuję użyć Symfony Form Component wybierać z tej sytuacji.

Powiązane problemy