从简单的表单获取数据到控制器

时间:2014-06-23 12:23:56

标签: php symfony

我在FOSUserbundle:Profile:showcontent.html.twig文件中创建了一个表单。我想知道用户是否想要订阅时事通讯。

<form action="{{ path('fos_user_newsletter') }}" method="POST"
                    class="fos_user_newsletter" id="fos_user_newsletter">

                    <input type="checkbox" name="test123" value="HTML"


                         {% if user.newsletterEnabled == 1 %} checked


{% endif %} onclick="this.form.submit();"> Subscribe to Newsletter

                </form>

现在我想获取控制器中的数据。

public function subscribeNewsletterAction(Request $             
            var_dump($request->request->all());die;
        }

这不会显示任何内容而我无法拨打$form = $this->createFormBuilder($task),因为它在FOSUserBundle中。

如果单击复选框,我如何获取信息?我在做什么思考错误?

1 个答案:

答案 0 :(得分:2)

要明确的是,如果您在FOSUserBundle/Resources/views/Profile/show_content.html.twig文件中创建了此表单,那就错了。您不应该编辑vendor文件夹中的任何内容,因为它们可以被Composer覆盖。

您必须将此表单放入src目录中的模板中。

您应该使用Symfony创建一个简单的表单来完成这项工作。

// make sure you've imported the Request namespace above the class
use Symfony\Component\HttpFoundation\Request;
// ...

public function subscribeNewsletterAction(Request $request)
{
    $form = $this->createFormBuilder($defaultData)
        ->add('newsletter', 'choice', array(
            // ...
        ))
        ->getForm();

    $form->handleRequest($request);

    if ($form->isValid()) {
        $data = $form->getData();
    }

    // ... render the form
}

Using a Form without a Class