{"record":{"id":"6602f16d99a1b802","repo":"phacility/phabricator","slug":"footer-item-with-index-s-is-invalid-each-item","errorCode":null,"errorMessage":"Footer item with index \"%s\" is invalid: each item must be a dictionary describing a footer item.","messagePattern":"Footer item with index \"(.+?)\" is invalid: each item must be a dictionary describing a footer item\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/config/custom/PhabricatorCustomUIFooterConfigType.php","lineNumber":16,"sourceCode":"<?php\n\nfinal class PhabricatorCustomUIFooterConfigType\n  extends PhabricatorConfigJSONOptionType {\n\n  public function validateOption(PhabricatorConfigOption $option, $value) {\n    if (!is_array($value)) {\n      throw new Exception(\n        pht(\n          'Footer configuration is not valid: value must be a list of '.\n          'items.'));\n    }\n\n    foreach ($value as $idx => $item) {\n      if (!is_array($item)) {\n        throw new Exception(\n          pht(\n            'Footer item with index \"%s\" is invalid: each item must be a '.\n            'dictionary describing a footer item.',\n            $idx));\n      }\n\n      try {\n        PhutilTypeSpec::checkMap(\n          $item,\n          array(\n            'name' => 'string',\n            'href' => 'optional string',\n          ));\n      } catch (Exception $ex) {\n        throw new Exception(\n          pht(\n            'Footer item with index \"%s\" is invalid: %s',\n            $idx,","sourceCodeStart":1,"sourceCodeEnd":34,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/config/custom/PhabricatorCustomUIFooterConfigType.php#L1-L34","documentation":"Error \"Footer item with index \"%s\" is invalid: each item must be a dictionary describing a footer item.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/config/custom/PhabricatorCustomUIFooterConfigType.php:16 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}