web-dev-qa-db-ja.com

symfonyはコントローラーでフォームデータを取得します

私はこの見解を持っています:

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

ルーティングファイルで:

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

そして私のコントローラー

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

    }
}

私の質問は、コントローラでユーザーとパスワードのフィールドの値を取得してそれらを操作するにはどうすればよいですか?.

6
SensacionRC

例として、Symfony2.8を使用して、これを試してください

表示:

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

コントローラー:

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

パラメータを取得する他の方法は、命名がそれほど直感的ではないことがわかります。

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

// $_POST parameters
$request->request->get('name');
13
rescobar

Requestオブジェクトをアクションメソッドに渡して処理する必要があります。

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

ただし、この状況でダイヤルするには Symfony Form Component を使用することをお勧めします。

2
Matteo