我想获取复选框的值(选中或不选),但checkedbox不会添加到表单类型中。这是一个例子获取symfony中复选框的值
<input type="checkbox" class="checkbox" id="smsflash">
我问是否有可能获得控制器中的checkedbox的值或不是,以及如何?
我想获取复选框的值(选中或不选),但checkedbox不会添加到表单类型中。这是一个例子获取symfony中复选框的值
<input type="checkbox" class="checkbox" id="smsflash">
我问是否有可能获得控制器中的checkedbox的值或不是,以及如何?
它可能是一个有点晚了,但我的经验可能涉及您的问题,或可以帮助别人带一个类似的问题。
在我的情况下,复选框被添加到FormType,但会呈现相同的我想象如果添加到FormType之外。
我正在使用表单处理REST API请求,并且该复选框是其中一个字段。表单提交后,标题包含'Content-Type': 'application/x-www-form-urlencoded'
,因此我可以使用Symfony表单处理它。
问题在于表单值是作为字符串提交的(包括复选框值)。在Symfony方面,它期望如果checkbox属性存在 - 这是一个'truthy'值,如果它不存在,复选框为false。然而,因为复选框的值可以通过API表单作为字符串“false”提交 - 这相当于真实 - 因此无论复选框是否被选中,该值始终为真。
的一种方法来处理这种(但可能限制重新使用FormType的)是改变从窗体生成器“复选框”到“文本”的复选框类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('my_checkbox', 'text', array('error_bubbling' => true,'required' => false))
...
然后,处理的形式(并获取复选框的值)
$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);
}
...
集名称输入
<input type="checkbox" class="checkbox" id="smsflash" name="button_name">
,然后在控制器
use Symfony\Component\HttpFoundation\Request;
//..
public function exampleAction(Request $request, $id){
//..
$inputValue = $request->get("button_name");
//..
}
如果我正确理解此checbox不是窗体的一部分,并且您手动呈现它。这有什么原因吗?你可以从'$ _GET'或'$ _POST'这样的全局变量中得到结果。 – honzalilak
事实上,你正确理解我的意思,我想要得到这个复选框的价值beaucause当它被检查时,我应该得到其他领域的价值,这是表格的一部分 –
然后,我会考虑使复选框的一部分整个形式。 – honzalilak