{"record":{"id":"c7e12b0f93b34c29","repo":"phacility/phabricator","slug":"you-have-not-selected-any-objects-to-edit","errorCode":null,"errorMessage":"You have not selected any objects to edit.","messagePattern":"You have not selected any objects to edit\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"warning","filePath":"src/applications/transactions/bulk/PhabricatorBulkEngine.php","lineNumber":403,"sourceCode":"    $viewer = $this->getViewer();\n    $controller = $this->getController();\n    $request = $controller->getRequest();\n\n    if (!$this->objectList) {\n      throw new Exception(pht('Query does not match any objects.'));\n    }\n\n    if (!$this->editableList) {\n      throw new Exception(\n        pht(\n          'Query does not match any objects you have permission to edit.'));\n    }\n\n    // Restrict the selection set to objects the user can actually edit.\n    $objects = array_intersect_key($this->editableList, $this->targetList);\n\n    if (!$objects) {\n      throw new Exception(\n        pht(\n          'You have not selected any objects to edit.'));\n    }\n\n    $raw_xactions = $request->getStr('xactions');\n    if ($raw_xactions) {\n      $raw_xactions = phutil_json_decode($raw_xactions);\n    } else {\n      $raw_xactions = array();\n    }\n\n    if (!$raw_xactions) {\n      throw new Exception(\n        pht(\n          'You have not chosen any edits to apply.'));\n    }\n\n    $edit_engine = id($this->newEditEngine())","sourceCodeStart":385,"sourceCodeEnd":421,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/transactions/bulk/PhabricatorBulkEngine.php#L385-L421","documentation":"In the final edit step, the engine intersects the user's tick-box selection (targetList) with the editable objects. An empty intersection (nothing ticked, or every ticked object outside the editable set) is rejected before any transactions are read.","triggerScenarios":"Submitting the bulk edit form with no objects selected, or selecting only objects the user cannot edit.","commonSituations":"Client-side state failing to carry selected PHIDs into the request; users selecting everything then deselecting it; selections limited entirely to non-editable rows.","solutions":["Tick at least one editable object in the selection step and resubmit","If every selection is non-editable, first narrow the query to editable objects (see the sibling permission error)","If scripting, verify the selected PHID list is non-empty before POSTing"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Client-side: ensure at least one selected PHID is in the editable set.\n$selected = array_intersect_key($editableList, $targetList);\nif (!$selected) {\n  // keep the user on the selection step with an explanation\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep the selection UI from submitting when nothing is ticked","When scripting, assert the ticked PHID list is non-empty before POSTing"],"tags":["bulk-edit","selection","validation"],"backgroundTag":"empty-selection","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}