gpt4 book ai didi

symfony - 获取symfony中复选框的值

转载 作者:行者123 更新时间:2023-12-02 06:54:18 25 4
gpt4 key购买 nike

我想获取复选框的值(是否选中),但是复选框未添加到表单类型。这是一个例子

<input type="checkbox" class="checkbox" id="smsflash">

我问是否有可能在 Controller 中获取复选框的值,怎么办?

最佳答案

现在可能有点晚了,但是我的经验可能与您的问题有关,或者可能会帮助其他遇到类似问题的人。

就我而言,该复选框已添加到FormType,但如果在FormType之外添加,则会呈现我想象的相同的复选框。

我正在使用该表单来处理REST API请求,并且复选框是字段之一。提交表单时, header 包含'Content-Type': 'application/x-www-form-urlencoded',因此我可以使用Symfony表单进行处理。

问题在于表单值以字符串形式提交(包括复选框值)。在Symfony方面,它期望如果checkbox属性存在-它是一个“真实”值,如果不存在,则checkbox为false。但是,由于可以通过API表单将复选框值作为字符串“false”提交-等于true-因此,无论是否选中复选框,该值始终为true。

处理此问题的一种方法(但可能会限制FormType的重用)是在表单构建器中将复选框类型从“复选框”更改为“文本”:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('my_checkbox', 'text', array('error_bubbling' => true,'required' => false))
...

然后处理表单(并获取Checkbox值)
$form = $this->createForm(new MyFormType(), $myObject);
$form->handleRequest($request);

if($form->isValid()) {
$data = $form->getData();
if($data->getMyCheckbox() === "false") {
$myObject->setMyCheckbox(false);
} else {
$myObject->setMyCheckbox(true);
}
...

关于symfony - 获取symfony中复选框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com