php - Symfony 3.3 仅复选框未提交表单

标签 php html symfony symfony-3.3

我想要一个由 javascript 提交的表单,其中只包含一个复选框。但是由于空复选框不会在请求中发送它们的 key ,Symfony 不知道正在提交的表单。那么是否有任何不那么 hacky 的解决方案或者是这种“错误”。

形式:

class NewsletterType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('subscribingNewsletter', CheckboxType::class, [
                'label' => 'form.label.newsletter',
                'required' => false,
            ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => User::class,
         ]);
    }
}

Controller 的一部分:

$newsletterForm = $this->formFactory->create(NewsletterType::class, $userToEdit);
$newsletterForm->handleRequest($request);

if ($this->newsletterFormHandler->handle($newsletterForm)) {
    $this->session->getFlashBag()->add('notice', 'flash_message.newsletter_changed');

   return $response;
}

处理程序:

public function handle(FormInterface $form): bool
{
    if (!$form->isSubmitted() || !$form->isValid()) {
        return false;
    }

    $this->userManager->update($form->getData());

    return true;
}

查看:

{{ form_start(NewsletterForm) }}

{{ form_row(NewsletterForm.subscribingNewsletter, {
    attr: {class: 'js-newsletter-toggle'}
}) }}

{{ form_end(NewsletterForm) }}

最佳答案

所以我终于解决了这个问题。我发现让这个工作的唯一方法是将你的提交按钮添加到你的代码中,如下所示:

class NewsletterType extends AbstractType
{
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
             ->add('subscribingNewsletter', CheckboxType::class, [
                 'label' => 'form.label.newsletter',
                 'required' => false,
             ])
             ->add('submit', SubmitType::class);
     }

     public function configureOptions(OptionsResolver $resolver)
     {
         $resolver->setDefaults([
             'data_class' => User::class,
          ]);
     }
}

不在你看来。我是通过 javascript 提交表单的,所以方法是在 js 中模拟按钮点击。

关于php - Symfony 3.3 仅复选框未提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820500/

相关文章:

php - 如何在 PHP 类方法中将 db 对象传递给 mysqli_query

php - 根据另一个表中的存在从表中进行选择

html - 文章中页脚标签的正确使用

php - Symfony2 : How to change hidden field value on PRE_SUBMIT

PhpUnit 弃用通知 : error guessing kernel directory

php - Laravel 5.4 - 读取 xlsx 文件

php - Wordpress 字体与 Firefox 不同

html - 单击时按钮周围出现不需要的轮廓或边框

html - 如何缩放此图像翻转 CSS UL 菜单?浏览器缩小时图像消失

optimization - Symfony-更新多个记录