Я не знаю, как сказать моему классу типа формы принять параметр функции choice_value для входящего массива ключ / значение.
Вот как выглядит моя функция buildForm типа формы:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('tiers', ChoiceType::class, [
'choices' => $this->userSubscriptionTierRepository->getTiersSubscribedToByUser($this->userProvider->getCurrentUser()),
'choice_label' => 'name',
'required' => false,
'multiple' => true,
'expanded' => false,
'attr'=> array('class'=>'custom-select'),
'choice_value' => function (array $val /* this is wrong */) {
return $val['tierNumber'];
}
])
;
}
Внизу, где 'choice_value', я не знаю, как правильно объявить функцию, чтобы принять входящее значение.
Вот как выглядит функция "getTiersSubscribeedToByUser" для выбора:
/**
* @param User $user
* @return array
*/
public function getTiersSubscribedToByUser(User $user) : array
{
$qb = $this->createQueryBuilder('t');
$qb->select('t.tierNumber, COUNT(t.tierNumber)')
->innerJoin('t.subscriptions', 'subscriptions', 'WITH', 'subscriptions.isCancelled != :true')
->where('subscriptions.subscriber = :user')
->groupBy('t.tierNumber')
->orderBy('t.tierNumber', 'ASC')
->setParameter('user', $user)
->setParameter('true', true);
$query = $qb->getQuery();
return $query->getResult();
}
А вот как выглядят результаты getTiersSubscribeedToByUser:
array:3 [▼
0 => array:2 [▼
"tierNumber" => 1
1 => "2"
]
1 => array:2 [▼
"tierNumber" => 2
1 => "1"
]
2 => array:2 [▼
"tierNumber" => 3
1 => "1"
]
]
Итак, я должен указать значение выбора класса типа формы, чтобы принять то, что выглядит следующим образом:
1 => array:2 [▼
"tierNumber" => 2
1 => "1"
Как мне это сделать?
Это дает мне ошибку:
Argument 1 passed to App\Form\FeedFilterType::App\Form\{closure}() must be of the type array, integer given