我想獲取複選框的值(選中或不選),但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