Как передать массив с одного контроллера на другой? Получение ошибки Вызов функции-члена has () в null - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь получить данные из функции profileData из First Controller и преобразовать их в HTML во втором контроллере. Я не смог пройти через ошибку "Вызов функции-члена has () в null". Как мне это исправить?

Вот функция, указанная в первом контроллере.

public function profileData(Request $request, $uuid){
        $em = $this->getDoctrine()->getManager();
        $currentUser = $this->get('security.token_storage')->getToken()->getUser();
        $customerRepo = $em->getRepository('CoreEntity:SubscribedCustomer');
        $subscribedCustomer = $customerRepo->findOneBy(array('customer' => $uuid, 'consultant' => $currentUser->getId()));
        $customer = $subscribedCustomer->getCustomer();
        $age = 'N/A';
        $dob = $customer->getDateOfBirth();

        if ($dob) {
            $birthYear = $customer->getDateOfBirth()->format('Y');
            $yearNow = date('Y');
            $age = $yearNow - $birthYear;
            $dob = $customer->getDateOfBirth()->format('Y-m-d');
        } else {
            $dob = "";
        }
        if ($customer->getStatus() === 1) {
            $status = "Active";
        } else {
            $status = "Inactive";
        }
        $data = array(
            'firstName' => $customer->getFirstName(),
            'lastName' => $customer->getLastName(),
            'email' => $customer->getEmail(),
            'phoneNum' => $customer->getPhoneNumber(),
            'gender' => $customer->getGender(),
            'age' => $age,
            'status' => $status,
            'dob' => $dob
        );
    }

Во втором контроллере я хочу отобразить данные в

/**
 * @Route("/client/{uuid}/basic_health/bmi", name="client_bh_bmi")
 */
 public function basicHealthBmiAction($uuid)
 {
   $this->checkWebModuleAccess(WebModuleCode::MANAGE_CLIENT);
   $profileData = $this->get('client_profile_data')->profileData();
        return $this->render('AppBundle:client/health_record/basic_health:bmi.html.twig', array(
            'customer' => $data
        ));
    }

В services.yml:

services:
  client_profile_data:
        class: AppBundle\Controller\FirstController

1 Ответ

1 голос
/ 01 апреля 2019

Хотя это не очень распространено, вы также можете перенаправить его на другой контроллер изнутри с помощью метода forward (), предоставляемого классом AbstractController.

Вместо перенаправления браузера пользователя это делает «внутренний» подзапроси вызывает определенный контроллер.Метод forward () возвращает объект Response, возвращаемый этим контроллером

https://symfony.com/doc/current/controller/forwarding.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...