我想获取复选框的值(已选中或未选中),但未将复选框添加到表单类型中。这是一个例子
<input type="checkbox" class="checkbox" id="smsflash">
我问是否有可能在控制器中获取checkbox的值,以及如何获得?
答案 0 :(得分:4)
将名称设置为输入
use Symfony\Component\HttpFoundation\Request;
//..
public function exampleAction(Request $request, $id){
//..
$inputValue = $request->get("button_name");
//..
}
然后在控制器中
Global symbol "%CustomerCompanyName" requires explicit package name at /opt/otrs//Kernel/Output/HTML/Dashboard/TicketGeneric.pm line 1516.
答案 1 :(得分:2)
现在可能有点晚了,但我的经历可能与您的问题有关,或者可能会帮助其他有类似问题的人。
在我的情况下,复选框被添加到FormType中,但如果在FormType之外添加,则会显示相同的内容。
我正在使用表单来处理REST API请求,复选框是其中一个字段。提交表单时,标题包含public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('my_checkbox', 'text', array('error_bubbling' => true,'required' => false))
...
,因此我可以使用Symfony表单处理它。
这个问题是表单值以字符串形式提交(包括复选框值)。在Symfony方面,它期望如果checkbox属性存在 - 它是'truthy'值,如果它不存在,则复选框为false。但是因为复选框值可以通过API表单作为字符串“false”提交 - 这相当于true - 所以无论是否选中该复选框,该值始终为true。
处理此问题的一种方法(但可能限制重复使用FormType)是在表单生成器中将复选框类型从“复选框”更改为“文本”:
$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);
}
...
然后处理表单(并获取Checkbox值)
resp = requests.get(url, params=pl1, auth=(uname, pwd))