Как я могу использовать метод __toString для поля выбора типа - PullRequest
0 голосов
/ 03 декабря 2018

В соответствии с этим уроком 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->add('type', EntityType::class, array(
            'attr' => array('class' => 'form-control select2'), 'label' => 'Type',
            'class' => FieldTypes::class,
            'choices' => $FieldTypes->__toString(),
          ));

Примечание: неопределенная переменная: 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();
              }
        ));

Но здесь я получаю сообщение об ошибке:

Попытка вызова неопределенного метода с именем "__toString" класса "App \ Entity \"FieldTypes ".

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

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

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

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

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

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

0 голосов
/ 03 декабря 2018

В моем FieldTypesRepository.php я создал функцию toString

Поместите этот метод в вашу сущность App\Entity\FieldTypes, а не в ваше хранилище

...