Symfony 在控制器中获取表单数据
Symfony get form data in controller
我有这样的看法:
//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(){
}
}
我的问题是如何在控制器中获取用户和密码字段的值以使用它们?我进行了搜索,但没有看到明确的解决方案。
您应该将 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拨号。
通过示例和使用 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');
我有这样的看法:
//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(){
}
}
我的问题是如何在控制器中获取用户和密码字段的值以使用它们?我进行了搜索,但没有看到明确的解决方案。
您应该将 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拨号。
通过示例和使用 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');