Php 如果在Sonata Admin configureFormFields中选择了“全部”选项,则禁用其他选项
在“我的选择选项”中,“全部”是第一个选项 如果选择了“全部”选项,如何禁用所有其他字段 反之亦然,如果选择了任何其他字段,则禁用“全部” 选项可选择的 PushBroadcastAdmin.phpPhp 如果在Sonata Admin configureFormFields中选择了“全部”选项,则禁用其他选项,php,symfony,jquery-select2,sonata-admin,symfony-sonata,Php,Symfony,Jquery Select2,Sonata Admin,Symfony Sonata,在“我的选择选项”中,“全部”是第一个选项 如果选择了“全部”选项,如何禁用所有其他字段 反之亦然,如果选择了任何其他字段,则禁用“全部” 选项可选择的 PushBroadcastAdmin.php protected function configureFormFields(FormMapper $formMapper) { if ($this->getSubject()->getId()) { $data = $this->getSubject()-
protected function configureFormFields(FormMapper $formMapper)
{
if ($this->getSubject()->getId()) {
$data = $this->getSubject()->getUsers();
$recipientsArray = explode(',', $data);
}
else {
$recipientsArray = [];
}
$em = $this->modelManager->getEntityManager('AppBundle:User');
$users = $em->getRepository('AppBundle:User')->findAllUsers();
$formMapper
->add('recipients', ChoiceType::class, array(
'choices' => $users,
'data' => $recipientsArray,
'expanded' => false,
'multiple' => true,
'label' => 'Recipient(s)',
'attr' => array(
'class' => 'push_recipients_select',
),
))
->add('title')
->add('message')
;
}
public function prePersist($object)
{
$data = $object->getRecipients();
$object->setUsers(implode(',',$data));
parent::prePersist($object);
}
UserRepository.php
public function findAllUsers()
{
$qb = $this->createQueryBuilder('u');
$data = $qb
->select('u.id')
->addSelect('u.name')
->andWhere('u.enabled = 1')
->andWhere('u.isDeleted = 0')
->getQuery()
->getArrayResult();
$result = [];
$result['All'] = 'all';
foreach ($data as $value){
$result[$value['name']] = $value['id'];
}
return $result;
}
您可以使用jQery代码来实现这一点,但我不太确定sonataadminbundle会从模板中呈现html页面。我应该附加html/twig模板吗?