获取symfony中的复选框值

时间:2016-01-20 14:22:16

标签: symfony twig

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

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

我问是否有可能在控制器中获取checkbox的值,以及如何获得?

2 个答案:

答案 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))