Code: Select all
namespace App\Form\Fields;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
class EntityField extends AbstractType
{
public function configureOptions(OptionsResolver $resolver): void
{
parent::configureOptions($resolver);
// some additional configuration
$resolver->setDefaults([
'query_builder' => function (EntityRepository $er): QueryBuilder {
return $er->createQueryBuilder('entity')
->andWhere('entity.deletedAt IS NULL');
},
]);
}
public function getParent(): string
{
return EntityType::class;
}
}
Es funktioniert einwandfrei, solange ich weichdetelierte Entität, die bereits verwendet wurde. Ich habe Benutzer , Datei und fileType Entitäten, Benutzer hat die Erfassung von Datei und Datei fileType enthält. Ich habe einige Filetype softdeletiert und für mich bedeutet es, dass ich keine neuen Datei dieses Filetyps erstellen möchte, sondern alle vorhandenen Dateien dieses Filetyps < /Code> sind immer noch legal und müssen in Formularen ordnungsgemäß angezeigt werden. "Richtig" bedeutet in diesem Fall, dass, wenn ich Datei Formular und diese genaue Datei render FileType , die Auswahl diese gelöscht hat Filetyp . Aber jetzt habe ich in diesem Feld keinen ausgewählten Wert und es wie "Es gibt keinen ausgewählten Dateityp für diese Datei" dh nicht.
Ich habe versucht, query_builder in FormEvents :: PRE_SET_DATA Ereignis und fügen Sie den Wert aus der Datenbank hinzu, aber es sieht so aus Unmodifizierte query_buider . Fall Ich muss die Formattribute manuell ändern. Vielleicht habe ich irgendeine Formularoptionen vergessen?