setRedirect('materio_expo.qr_controller_getfile', ['ref'=>$ref]); // $response = new RedirectResponse(!empty($destination) ? $destination : '/'); $url = Url::fromRoute('materio_expo.qr_controller_getfile', ['ref'=>$ref]); $response = new RedirectResponse($url->toString()); $response->headers->setCookie(new Cookie('materio_expo_email', true, strtotime( '+3 days' ), '/')); $response->send(); return $response; } /** */ public function getfile($ref) { //? https://drupal.stackexchange.com/questions/255216/how-to-do-a-redirectresponse-with-a-destination-query-parameter //* check if email cookie is present (form submitted) // $session = \Drupal::request()->getSession(); // $alreadysetemail = $session->get('materio_expo_email'); $alreadysetemail = \Drupal::request()->cookies->get('materio_expo_email', false); if($alreadysetemail){ //* get node from ref $entity_storage = \Drupal::entityTypeManager()->getStorage('node'); $query = $entity_storage->getQuery() ->condition('type', 'materiau') ->condition('status', '1') ->accessCheck() ->condition('field_reference', $ref); $results = $query->execute(); $nid = array_pop($results); $node = $entity_storage->load($nid); //* get file from node $file = $node->get('field_fiche_expo')->referencedEntities()[0]; //* redirect to file return new RedirectResponse($file->createFileUrl()); // return [ // '#type' => 'markup', // '#markup' => $this->t("Error, email not provided"), // ]; } else { // return [ // '#type' => 'markup', // '#markup' => $this->t("Error, email not provided"), // ]; $url = Url::fromRoute('materio_expo.get_email', ['ref'=>$ref]); return new RedirectResponse($url->toString()); } } }