Как я могу использовать метод __toString для поля типа выбора

Согласно этому руководству 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".

Symfony делает это автоматически, вам не нужно делать ничего вроде 'choices' => $FieldTypes->__toString()

Fabian Schmick 03.12.2018 14:08

@Fabian Если я больше ничего не буду делать, то выдает сообщение об ошибке Attempted to call an undefined method named "__toString" of class "App\Entity\FieldTypes".

peace_love 03.12.2018 15:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
2
841
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

In my FieldTypesRepository.php I created the function toString

Поместите этот метод в свою сущность App\Entity\FieldTypes, а не в свой репозиторий

Но в моем объекте у меня уже есть эта функция `public function getName ():? String {return $ this-> name; } `

peace_love 03.12.2018 15:15
Ответ принят как подходящий

Когда вы используете EntityType, Symfony автоматически вызывает метод __toString () отображаемой сущности. Вам либо нужно реализовать функцию в своем объекте FieldType:

public function __toString(): ?string
{
   return $this->name;
}

или вы можете использовать

'choice_label' => function ($fieldTypes) {
   return $fieldTypes->getName();
}

в вашей форме, чтобы вызвать другую функцию.

Другие вопросы по теме