我在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
中。
如果单击复选框,我如何获取信息?我在做什么思考错误?
答案 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
}