Как отобразить имена крестников посла в списке?

#php #mysql

#php #mysql

Вопрос:

Я создаю систему спонсорства, и я хотел бы отобразить имена крестников в списке.

У меня есть список «посланников», у послов которых будут крестники, у которых будут другие крестники. На данный момент мне удается отобразить количество крестников для каждого посла, но у меня возникли проблемы с созданием скрипта для отображения имени. Не могли бы вы мне помочь? Спасибо.

 public function adminAmbassadorsAction(Request $request)
    {
        /** @var UserManager $userManager * */
        $ambassadors = $this->get('fos_user.user_manager');

        $em = $this->getDoctrine()->getEntityManager(); # Getting the entity manager for future request.

        /** @var UserRepository $repository * */
        $repository = $em->getRepository('AppBundle:User');

        // Recup all ambassadors
        $ambassadors = $repository->findByRole("ROLE_AMBASSADOR");

        $proprietesAmbassadeur = array();

        // Iterate ambassadors
        foreach ($ambassadors as $ambassador) {

            // Recup all fileuls
            // $ambassador = $this->getFullName();  // recup name parrain

            $filleuls = $repository->findBy(array('parrain' => $ambassador->getId()));  

            foreach ($filleuls as $filleul) {
                ($filleul->getFullName());

            }

            $proprietesAmbassadeur[$ambassador->getId()] = count($filleuls);
        }

        // render the view
        return $this->render('Admin/listing_sponsor.html.twig', [
            'os_ambassadors' => $ambassadors,
            'os_proprietes' => $proprietesAmbassadeur,
        ] );
    }
}
  

Ответ №1:

Вы не передаете крестных детей в представление.

Я переписал ваш код, чтобы он передавал общее количество крестных детей и все их имена.

 public function adminAmbassadorsAction(Request $request)
{
    /** @var UserManager $userManager * */
    $ambassadors = $this->get('fos_user.user_manager');

    $em = $this->getDoctrine()->getEntityManager(); # Getting the entity manager for future request.

    /** @var UserRepository $repository * */
    $repository = $em->getRepository('AppBundle:User');

    // Recup all ambassadors
    $ambassadors = $repository->findByRole("ROLE_AMBASSADOR");

    $proprietesAmbassadeur = array();

    // Iterate ambassadors
    foreach ($ambassadors as $ambassador) {

        // Recup all fileuls
        // $ambassador = $this->getFullName();  // recup name parrain

        $filleuls = $repository->findBy(array('parrain' => $ambassador->getId()));

        $proprietesAmbassadeur[$ambassador->getId()] = array('total' => count($filleuls), 'filleulFullNames' => array());
        foreach ($filleuls as $filleul) {
            $proprietesAmbassadeur[$ambassador->getId()]['filleulFullNames'][] = $filleul->getFullName();
        }


    }

    // render the view
    return $this->render('Admin/listing_sponsor.html.twig', [
        'os_ambassadors' => $ambassadors,
        'os_proprietes' => $proprietesAmbassadeur,
    ] );
}
  

Комментарии:

1. Спасибо за вашу помощь, однако у меня ошибка, которая выглядит следующим образом: Предупреждение: невозможно использовать скалярное значение в качестве массива, и назначается строка кода: $proprietesAmbassador[$ambassador-> getId()][‘filleulFullNames’][] = $filleul-> getFullName();

2. @FranciscoBeronPerez Я отредактировал свой код. Я забыл объявить ‘filleulFullNames’ как массив, прежде чем использовать его как массив.

3. Нет проблем. Если мой ответ исправил это для вас, не могли бы вы принять это как ответ?