问题描述
致命错误:非抽象方法 NF_Handlers_FieldsetRepeater::isFieldsetData() 必须在第 173 行的 /home/warstdam/public_html/wp-content/plugins/ninja-forms/includes/Handlers/FieldsetRepeater.PHP 中包含正文
/**
* Determine if data matches fieldset repeater construct
*
* When given only a submission value without any Meta data,check the
* construct of the value to asssert with some level of confidence that
* the value is from a fieldset repeater.
*
* Logic:
* - is submission empty? then NO,we don't assert is fieldset repeater data
* - can the array key be parsed as a fieldset repeater key? If not,then NO…
* - is each value an array with 'id' and 'value' keys,* and the `id` matches the id of its parent? If not,then NO...
*
* If all the above conditions are met for every entry in the submission,* we assert that the submission value is that of a fieldset repeater.
*
*
* @param array $submission
* @return boolean
*/
public function isFieldsetData(array $submission); bool
{
$return = true;
// If not array containing data,not fieldset repeater
if (empty($submission)) {
$return = false;
}
foreach($submission as $key=>$submissionValueArray){
$submissionReference = $this->parseFieldsetFieldReference($key);
if(-1===$submissionReference){
$return = false;
}
if(!isset($submissionValueArray['id'])
|| $key!==$submissionValueArray['id']
|| !isset($submissionValueArray['value'])){
$return = false;
}
}
代码到此结束
{
$return = [];
if (!is_array($fieldSubmissionValue)) {
return $return;
}
if(''!==$fieldId and []!== $fieldSettings){
$fieldsetLabelLookup = $this->getFieldsetLabels($fieldId,$fieldSettings);
$fieldsetTypeLookup = $this->getFieldsetTypes($fieldId,$fieldSettings);
}else{
$fieldsetLabelLookup = null;
$fieldsetTypeLookup = null;
}
// $completeFieldsetID is in format {fieldsetRepeaterFieldId}{fieldsetDelimiter}{fieldsetFieldId}{submissionIndexDelimiter}{submissionIndex}
foreach ($fieldSubmissionValue as $completeFieldsetId => $incomingValueArray) {
// value is expected to be keyed inside incoming value array
if (isset($incomingValueArray['value'])) {
$value = $incomingValueArray['value'];
} else {
$value = $incomingValueArray;
}
// attempt parsing of fielsetField; if any fail,exit as data is corrupt
$fieldsetWithSubmissionIndex = $this->parseFieldsetFieldReference($completeFieldsetId);
if (0 == $fieldsetWithSubmissionIndex['fieldsetFieldId']) {
return $return;
}
$parsedSubmissionIds = $this->parseSubmissionIndex($fieldsetWithSubmissionIndex['fieldsetFieldId']);
if (-1 === $parsedSubmissionIds['submissionIndex']) {
return $return;
}
$fieldsetFieldId = $parsedSubmissionIds['fieldsetFieldId'];
$submissionIndex = $parsedSubmissionIds['submissionIndex'];
$idKey = $fieldId . $this->fieldsetDelimiter . $fieldsetFieldId;
if(is_null($fieldsetTypeLookup)){
$fieldsetFieldType='';
}else{
$fieldsetFieldType = $fieldsetTypeLookup[$idKey];
}
if(is_null($fieldsetLabelLookup)){
$fieldsetFieldLabel='';
}else{
$fieldsetFieldLabel = $fieldsetLabelLookup[$idKey];
}
$array = [];
$array['value'] = $value;
$array['type'] = $fieldsetFieldType;
$array['label'] = $fieldsetFieldLabel;
$return[$submissionIndex][$fieldsetFieldId] = $array;
}
return $return;
}
}
解决方法
看起来像是语法错误。
将 ; bool
更改为 : bool
。
public function isFieldsetData(array $submission): bool