- do not return anything when the button was not clicked
- return boolean true (instead of the button text) when it was clicked
Unbreaks submit fields which currently don't return anything so there is
no easy way to tell whether they have been clicked.
Change-Id: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
foreach ( $fields as $key => $value ) {
if ( $value instanceof HTMLFormField ) {
foreach ( $fields as $key => $value ) {
if ( $value instanceof HTMLFormField ) {
- $v = empty( $value->mParams['nodata'] )
+ $v = isset( $this->mFieldData[$key] )
? $this->mFieldData[$key]
: $value->getDefault();
? $this->mFieldData[$key]
: $value->getDefault();
$fieldData = [];
foreach ( $this->mFlatFields as $fieldname => $field ) {
$fieldData = [];
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ $request = $this->getRequest();
+ if ( $field->skipLoadData( $request ) ) {
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$fieldData[$fieldname] = $field->getDefault();
} else {
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$fieldData[$fieldname] = $field->getDefault();
} else {
- $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
+ $fieldData[$fieldname] = $field->loadDataFromRequest( $request );
return $this->msg( $value, [] );
}
}
return $this->msg( $value, [] );
}
}
+
+ /**
+ * Skip this field when collecting data.
+ * @param WebRequest $request
+ * @return bool
+ * @since 1.27
+ */
+ public function skipLoadData( $request ) {
+ return !empty( $this->mParams['nodata'] );
+ }
$subrequest = new DerivativeRequest( $request, $data, $request->wasPosted() );
$row = [];
foreach ( $fields as $fieldname => $field ) {
$subrequest = new DerivativeRequest( $request, $data, $request->wasPosted() );
$row = [];
foreach ( $fields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ if ( $field->skipLoadData( $subrequest ) ) {
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$row[$fieldname] = $field->getDefault();
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$row[$fieldname] = $field->getDefault();
$fields = $this->createFieldsForKey( $key );
foreach ( $fields as $fieldname => $field ) {
$fields = $this->createFieldsForKey( $key );
foreach ( $fields as $fieldname => $field ) {
- $v = ( empty( $field->mParams['nodata'] ) && $values !== null )
+ $v = isset( $values[$fieldname] )
? $values[$fieldname]
: $field->getDefault();
? $values[$fieldname]
: $field->getDefault();
protected $buttonType = 'submit';
protected $mFlags = [ 'primary', 'constructive' ];
protected $buttonType = 'submit';
protected $mFlags = [ 'primary', 'constructive' ];
+
+ public function skipLoadData( $request ) {
+ return !$request->getCheck( $this->mName );
+ }
+
+ public function loadDataFromRequest( $request ) {
+ return $request->getCheck( $this->mName );
+ }