繁体   English   中英

Symfony2表单-没有表单生成器

[英]Symfony2 forms - No Form Builder

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>

我不会添加所有html,但是它不是标准格式,而是使用Form Builder。

我已设定路线

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

这样,当我转到localhost:8000时,该路由就会显示我的形式。 它还说明要使用哪个控制器。 至于控制器,我有

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}}始终显示“尚未提交”。 即使我使用数据提交表单,也似乎什么也没有发生。 似乎该按钮什么也不做。 即使在调试控制台中查看,也看不到任何请求。

所以我希望有人可以就我在这里做错的事向我提出建议?

谢谢

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

因此,您可以执行以下操作:

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');  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM