【问题标题】:Symfony get form data in controllerSymfony 在控制器中获取表单数据
【发布时间】:2017-08-06 15:59:48
【问题描述】:

我有这样的看法:

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

    }
}

我的问题是如何在控制器中获取用户和密码字段的值以使用它们?我有搜索但我没有看到明确的解决方案。

【问题讨论】:

标签: symfony symfony-forms symfony-2.1


【解决方案1】:

试试这个,例如并使用 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');

【讨论】:

  • 谢谢,现在我在控制器中获取了我的变量,正如你所说,query->get() 方法需要字段的名称,而不是 id。
  • 是@SensacionRC,在示例中,您将获得字段“_username”和“_password”的名称,而不是ID,其他方式和构建表单的最佳实践是symfony.com/doc/2.8/forms.html
【解决方案2】:

你应该将 Request 对象传递给 action 方法然后处理它:

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

但是我建议你使用Symfony Form Component来拨号。

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2015-05-22
    • 2018-06-20
    • 2018-01-23
    相关资源
    最近更新 更多