query->get('entityType'); if (empty($entityType)) { return new JsonResponse([]); } $searchKey = $request->query->get('searchKey', ''); $searchValue = $request->query->get($searchKey, ''); $filter = $searchValue ?: $request->query->get('search', ''); $limit = (int) $request->query->get('limit', '10'); $start = (int) $request->query->get('start', '0'); $results = $projectModel->getLookupResults($entityType, $filter, $limit, $start); // Format results to match AjaxLookupControllerTrait structure $dataArray = []; foreach ($results as $value => $text) { $dataArray[] = [ 'text' => $text, 'value' => $value, ]; } return new JsonResponse($dataArray); } public function addProjectsAction(Request $request, ProjectModel $projectModel, ProjectRepository $projectRepository, CorePermissions $corePermissions): JsonResponse { if (!$corePermissions->isGranted(ProjectPermissions::CAN_ASSOCIATE)) { $this->accessDenied(); } $existingProjectIds = json_decode($request->request->get('existingProjectIds'), true); $newProjectNames = json_decode($request->request->get('newProjectNames'), true); if ($corePermissions->isGranted(ProjectPermissions::CAN_CREATE)) { foreach ($newProjectNames as $projectName) { $project = new Project(); $project->setName($projectName); $projectModel->saveEntity($project); $existingProjectIds[] = $project->getId(); } } // Get an updated list of projects $allProjects = $projectRepository->getSimpleList(null, [], 'name'); $projectOptions = ''; foreach ($allProjects as $project) { $selected = in_array($project['value'], $existingProjectIds) ? ' selected="selected"' : ''; $projectOptions .= ''.$project['label'].''; } return $this->sendJsonResponse(['projects' => $projectOptions]); } }