Согласно этому руководству https://symfony.com/doc/4.1/reference/forms/types/entity.html#choice-label я пытаюсь использовать метод toString для загрузки моих раскрывающихся опций непосредственно из enity FieldTypes:
В моем FieldTypesRepository.php я создал функцию toString:
public function __toString() {
return $this->FieldTypes;
}
В моем PagesController.php я использую функцию в моем formbuilder:
$formBuilder->add('type', EntityType::class, array(
'attr' => array('class' => 'form-control select2'), 'label' => 'Type',
'class' => FieldTypes::class,
'choices' => $FieldTypes->__toString(),
));
Notice: Undefined variable: FieldTypes
Я также пробовал:
$formBuilder->add('type', EntityType::class, array(
'attr' => array('class' => 'form-control select2'), 'label' => 'Type',
'class' => FieldTypes::class,
'choice_label' => function ($fieldTypes) {
return $fieldTypes->__toString();
}
));
Но тут я получаю сообщение об ошибке:
Attempted to call an undefined method named "__toString" of class "App\Entity\FieldTypes".
@Fabian Если я больше ничего не буду делать, то выдает сообщение об ошибке Attempted to call an undefined method named "__toString" of class "App\Entity\FieldTypes".




In my FieldTypesRepository.php I created the function toString
Поместите этот метод в свою сущность App\Entity\FieldTypes, а не в свой репозиторий
Но в моем объекте у меня уже есть эта функция `public function getName ():? String {return $ this-> name; } `
Когда вы используете EntityType, Symfony автоматически вызывает метод __toString () отображаемой сущности. Вам либо нужно реализовать функцию в своем объекте FieldType:
public function __toString(): ?string
{
return $this->name;
}
или вы можете использовать
'choice_label' => function ($fieldTypes) {
return $fieldTypes->getName();
}
в вашей форме, чтобы вызвать другую функцию.
Symfony делает это автоматически, вам не нужно делать ничего вроде
'choices' => $FieldTypes->__toString()