From 50a6f3585e0010c1e08ce204d82d71a3b24df0fb Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 7 Jun 2019 12:13:02 -0400 Subject: [PATCH] Add InputfieldCheckbox checked() method as an optional shortcut for getting/setting checkbox state --- .../Inputfield/InputfieldCheckbox.module | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/wire/modules/Inputfield/InputfieldCheckbox.module b/wire/modules/Inputfield/InputfieldCheckbox.module index 04fb534c..60f82edc 100644 --- a/wire/modules/Inputfield/InputfieldCheckbox.module +++ b/wire/modules/Inputfield/InputfieldCheckbox.module @@ -160,7 +160,6 @@ class InputfieldCheckbox extends Inputfield { if($this->autocheck || $this->getSetting('formBuilder')) $this->attr('checked', 'checked'); } - return parent::setAttribute($key, $value); } @@ -169,15 +168,50 @@ class InputfieldCheckbox extends Inputfield { return parent::set($key, $value); } + /** + * Get or set current checkbox boolean attribute state + * + * ~~~~~ + * // the following two lines are equivalent to GET checkbox state + * $checked = $f->checked(); + * $checked = !empty($f->attr('checked')); + * + * // the following two lines are equivalent to SET checkbox state + * $f->checked(true); + * $f->attr('checked', 'checked'); + * ~~~~~ + * + * @param bool|null Specify boolean to set checkbox state + * @return bool + * @since 3.0.133 + * + */ + public function checked($checked = null) { + if($checked !== null) { + if($checked) { + $this->attr('checked', 'checked'); + $checked = true; + } else { + $this->removeAttr('checked'); + $checked = false; + } + } else { + $checked = $this->attr('checked'); + $checked = empty($checked) ? false : true; + } + return $checked; + } + /** * Is checkbox currently checked? * + * #pw-internal + * * @return bool * */ public function isChecked() { - $checked = $this->attr('checked'); - return !empty($checked); + return $this->checked(); } /** @@ -188,7 +222,7 @@ class InputfieldCheckbox extends Inputfield { */ public function isEmpty() { // return $this->attr('value') != $this->checkedValue; - return !$this->isChecked(); + return !$this->checked(); } /**