Forms Symfony2表格-无表格生成器

Forms Symfony2表格-无表格生成器,forms,symfony,Forms,Symfony,对Symfony来说是个新手,正在尝试理解一些东西。我有index.twig.html,其中有一个表单 <form action="{{ path('SpecialAlertBundle_add') }}" method="post" enctype="multipart/form-data" class="addAlertForm"> <textarea class="addMargin" id="na_command" name="na_command" rows

对Symfony来说是个新手,正在尝试理解一些东西。我有index.twig.html,其中有一个表单

<form action="{{ path('SpecialAlertBundle_add') }}" method="post" enctype="multipart/form-data" class="addAlertForm">

    <textarea class="addMargin" id="na_command" name="na_command" rows="3" cols="50" placeholder="A20APRLONLAX"></textarea>

    <button type="button" class="btn btn-default" id="submit_alert" name="submit_alert">Submit</button>
    {{ name }}

</form>
当我转到localhost:8000时,该路由显示我的表单ok。它还说明要使用哪个控制器。至于控制器,我有

class AlertController extends Controller
{
    public function addAction()
    {
        $request = $this->get('request_stack')->getCurrentRequest();

        if ($request->request->has('submit_alert')) {
            $name = $request->request->get('na_command');
        } else {
            $name = 'Not submitted yet';
        }

        return $this->render('SpecialAlertBundle:Page:index.html.twig', array(
            'name' => $name
        ));
    }
}
我想澄清的第一件事是控制器中的返回。这是我希望在提交表单后呈现的视图吗

第二件事是,目前,模板中的{{name}}总是显示尚未提交。即使当我提交带有数据的表单时,似乎什么也没有发生。这个按钮好像什么也没用。即使在调试控制台中查看,也没有看到任何请求

所以我希望有人能告诉我我做错了什么


谢谢

首先,为什么不直接在控制器中使用请求而不是请求堆栈?请求堆栈主要用于将其注入服务(而不是将请求注入服务)

所以,你可以这样做:

public function addAction(Request $request)
{}
那么我建议你把get请求和post请求分开。只需定义两条不同的路线。 例如:

SpecialAlertBundle_add:
    pattern:  /
    defaults: { _controller: SpecialAlertBundle:Alert:add }
    requirements:
       _method:  GET

SpecialAlertBundle_create:
    pattern:  /
    defaults: { _controller: SpecialAlertBundle:Alert:create }
    requirements:
       _method:  POST
在此之后,您必须更改表单操作值:将其设置为“SpecialAlertBundle_create”

现在的那个会更干净。之后,您就不需要检查请求中是否存在“submit_alert”属性。您可以将“na_command”字段的值指定给$name:

$name = $request->get('na_command');  

SpecialAlertBundle_create是否应该在控制器中调用创建操作?我已经做了建议的改进,表单显示很好,但是我仍然无法让它转储输入的值。我似乎已经让它工作了。由于某种原因,当我的表单使用按钮时,它将不起作用。当我把它改为输入类型提交时,它工作得很好。是的,对不起。SpecialAlertBundle_create应该调用创建操作。这可能是因为按钮不提交,而只是使页面重新加载。
$name = $request->get('na_command');