#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. Нет проблем. Если мой ответ исправил это для вас, не могли бы вы принять это как ответ?